如何在SQL中定义和使用全局变量

22 浏览
0 Comments

如何在SQL中定义和使用全局变量

我是一个测试人员,我必须运行很多选择查询来过滤出我正在测试的信息。\n是否有一种方法可以创建全局变量并使用它来代替粘贴相同的值?\n示例代码:\n选择l.prod_package,m.* from avtt7m0 m, avtt7l0 l \nwhere l.cust_id=\'52317162090004\' \nand l.ar_id=m.ar_id and m.lc_st_code=\'ACT\'; \n选择m.* from avtt7m0 m, avtt7l0 l \nwhere l.cust_id=\'52317162090004\' \nand l.ar_id=m.ar_id and m.lc_st_code=\'ACT\'; \n从AKTTD90中选择* \nwhere cust_id in (\'52317162090004\'); \n从Kndt7m0中选择* \nwhere cust_id in (\'52317162090004\');

0
0 Comments

在SQL中定义和使用全局变量的方法,可以使用PL/SQL的包变量。下面是一个示例代码:

create or replace package steptest as
  procedure set(a number);
  function get return number;
end;
/
create or replace package body steptest as
  x number;
  procedure set(a number) is
  begin
    x:=a;
  end;
  function get return number is
  begin
    return x;
  end;
begin
  x:=0;
end;    
/

上述代码中,创建了一个名为steptest的包,其中包含了一个变量x、一个set过程和一个get函数。set过程用于设置变量x的值,get函数用于获取变量x的值。在包体中,变量x被初始化为0。

接下来,可以通过以下代码来使用全局变量:

exec steptest.set(1234);
select steptest.get from dual;

以上就是在SQL中定义和使用全局变量的方法。使用PL/SQL的包变量可以方便地在SQL中定义和使用全局变量。

0
0 Comments

在SQL Server中,可以使用Declare声明一个变量(变量必须以@开头),然后使用Set给变量赋值,最后可以在查询中使用该变量(在大多数情况下):

DECLARE @variableName INT
SET @variableName = 12345
SELECT * FROM dbo.Customers WHERE CustomerID = @variableName

需要注意的是,这种方式无法用于某些情况,例如用于表名的变量。另外需要注意的是,这些变量在实际上并不是全局变量,它们在GO语句执行后将被销毁。

在SQL Developer 4.1中似乎不支持这种语法。如果我没有提供所有信息,对此我表示抱歉。这是因为我刚开始接触SQL,不知道需要提及什么重要的信息。

针对MySQL/SQL Developer进行了编辑,现在应该可以工作了(对于MySQL,不需要使用DECLARE部分)。

0
0 Comments

在SQL中定义和使用全局变量的问题是由于以下原因导致的:

1. 声明全局变量时,缺少变量名称。

2. 使用了错误的SQL语法,应该使用Oracle语法而不是T-SQL语法。

为了解决这个问题,我们可以采取以下措施:

1. 在声明全局变量时,确保提供变量的名称。

2. 使用适用于Oracle的SQL语法,而不是T-SQL语法。

下面是正确的示例代码:

DECLARE 
  Cust_id BIGINT := 52371762090004;
BEGIN
  SELECT * FROM AKTTD90 WHERE Cust_id = Cust_id;
END;

请注意,上述代码仅仅是为了演示目的,并不能保证在实际的SQL开发环境中能够执行成功。在实际的开发中,需要根据具体的需求和数据库平台来编写正确的SQL语句。

希望上述解决方法对您有所帮助。如果还有其他问题,请随时提问。

0