-4

我是一名测试人员,我必须运行大量选择查询来过滤掉我正在测试的信息。

在此处输入图像描述

有没有办法制作全局变量并使用它而不是粘贴相同的值?

在此处输入图像描述

示例代码:

Select l.prod_package,m.* from avtt7m0 m, avtt7l0 l 
where l.cust_id='52317162090004' 
and l.ar_id=m.ar_id and m.lc_st_code='ACT'; 

Select m.* from avtt7m0 m, avtt7l0 l 
where l.cust_id='52317162090004' 
and l.ar_id=m.ar_id and m.lc_st_code='ACT'; 

Select * From AKTTD90 
where cust_id in ('52317162090004'); 

Select * From Kndt7m0 
where cust_id in ('52317162090004');
4

3 回答 3

0

您可以声明变量并为其赋值customer

DECLARE @Customer BIGINT='52371762090004'

SELECT * FROM AKTTD90 WHERE Cust_id=@Customer

更新:尝试执行上述查询。

于 2016-12-05T09:54:25.407 回答
0

这针对 SQL Server - 您的问题没有特定的 RDMS。您可以Declare使用一个变量(必须以 then 开头,@然后Set使用它(在大多数情况下):

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

请注意,这不能用于某些事情,例如表名的变量。另请注意,这些变量实际上不是全局的,因为它们不会在GO语句中存活。

于 2016-12-05T09:55:34.617 回答
0

一种选择是使用 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;    
/

然后你可以:

exec steptest.set(1234);

select steptest.get from dual;
于 2016-12-05T16:26:58.367 回答