2016-12-05 692 views
-4

我是一名测试人员,我必须运行大量的选择查询来筛选出我正在测试的信息。如何在SQL中定义和使用全局变量

enter image description here

有没有一种方法,使全局变量,用它来代替粘贴相同的值吗?

enter image description here

示例代码:

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'); 
+0

您可以使用t-sql变量并事先进行设置。如果您发布的是您使用的代码而不是图片,我将向您展示如何使用它 –

+2

您正在使用哪种dbms。 (答案可能是产品特定的。) – jarlh

+0

我正在使用SQL开发人员。这里是代码:从avtt7m0 m,avtt7l0 l选择l.prod_package,m。*,其中l.cust_id ='52317162090004'和l.ar_id = m.ar_id和m.lc_st_code ='ACT'; 从avtt7m0 m,avtt7l0 l选择m。*其中l.cust_id ='52317162090004'和l.ar_id = m.ar_id和m.lc_st_code ='ACT'; 选择* From AKTTD90 where cust_id in('52317162090004'); 选择*从Kndt7m0 where cust_id in('52317162090004'); – VItas

回答

0

你可以声明变量并为其分配customer值。

DECLARE @Customer BIGINT='52371762090004' 

SELECT * FROM AKTTD90 WHERE [email protected] 

UPDATE:尝试执行上述查询。

+0

它不工作。我使用SQL开发4.1可以打赌原因?我不太了解SQL查询。所以可能是因为我没有给你所有的信息来帮助我。但如果可以的话,我会尽力回答。 – VItas

+0

@VItas我已经更新了答案。做检查。 –

+0

它给出了一个错误。你知道什么是错的吗?误差在命令开始位于第1行: DECLARE @Customer BIGINT = '52371762090004' SELECT * FROM KNDT7L0 WHERE的cust_id = @客户 错误报告: ORA-06550:第1行,第9栏: PLS-00103:出现符号“@”在需要下列之一时: 开始功能编译程序亚型类型<标识符>当前光标删除 存在现有 06550. 00000 - “行%S,柱% s:\ n%s“ *原因:通常是PL/SQL编译错误。 *操作: – VItas

0

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

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

注意,这不能用于某些东西,如一个表名称的变量也。请注意,这些变量不是在这个意义上实际上全球,他们将无法生存一个GO声明

+0

看来SQL开发人员4.1不喜欢这种语法。如果我没有提供所有信息,Sory。这只是因为我是SQL新手,所以我不知道要提及什么是重要的。为mysql/sql开发人员编辑 – VItas

+0

。这应该现在工作(声明部分不需要为MySQL)。 – jleach

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;  
/

和TH您可以:

exec steptest.set(1234); 

select steptest.get from dual;