2016-12-05 11 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-разработчик. Вот код: Выберите l.prod_package, m. * Из avtt7m0 m, avtt7l0 l где l.cust_id = '52317162090004' и l.ar_id = m.ar_id и m.lc_st_code = 'ACT'; Выберите m. * Из avtt7m0 m, avtt7l0 l где l.cust_id = '52317162090004' и l.ar_id = m.ar_id и m.lc_st_code = 'ACT'; Выберите * От AKTTD90 где cust_id в ('52317162090004'); Выберите * From Kndt7m0 где cust_id в ('52317162090004'); – VItas

ответ

0

Вы можете объявить переменную и присвоить ей значение customer.

DECLARE @Customer BIGINT='52371762090004' 

SELECT * FROM AKTTD90 WHERE [email protected] 

UPDATE: Попробуйте выполнить запрос выше.

+0

Он не работает. Im, использующий SQL-разработчик 4.1, может ли он поставить причину? Я мало знаю о запросах SQL. Может быть, я не даю вам всю информацию, чтобы помочь мне. Но я попробую ответить, если смогу. – VItas

+0

@VItas Я обновил ответ. Проверьте. –

+0

Обнаружили ошибку. Вы знаете, что может быть неправильным?Ошибка при запуске в строке 1 в команде: DECLARE @Customer BIGINT = '52371762090004' SELECT * FROM KNDT7L0 WHERE cust_id = @ клиента отчета Error: 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 

Обратите внимание, что это не может быть использовано для некоторых вещей, таких как переменная для имени таблицы также. Заметим, что эти переменные не являются на самом деле Global в том смысле, что они не переживут GO заявление

+0

Кажется, SQL-разработчик 4.1 не любит этот синтаксис. Сори, если я не дал всю информацию. Это просто потому, что я новичок в SQL, поэтому я не знаю, что важно упомянуть. – VItas

+0

для редактора mysql/sql. который должен работать сейчас (часть объявления не требуется для 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;  
/

И й en Вы можете:

exec steptest.set(1234); 

select steptest.get from dual;