我在Toad for Oracle中使用PL / SQL。 我想在我的代码中使用define变量,然后在查询中多次使用这个变量。
请注意,我不是要求输入变量值的弹出窗口;我需要这样的东西:
DEFINE min_salary = 100
SELECT Surname FROM employees
WHERE salary < min_salary
即。 WHERE语句中的min_salary假定上面定义的值。
上网时,有人建议添加一个&amp;在where语句中的变量之前,即
DEFINE min_salary = 100
SELECT Surname FROM employees
WHERE salary < &min_salary
但是这对我来说没用,因为&amp;调用弹出窗口。 相反,我会直接在代码中插入值。
任何人都可以提供帮助吗?
答案 0 :(得分:3)
Select-Statement不是PL / SQL它的SQL。您需要创建PL / SQL代码:
DECLARE
min_salary employees.salary%TYPE := 100;
BEGIN
FOR i IN (SELECT Surname
FROM employees
WHERE salary < min_salary)
LOOP
DBMS_OUTPUT.put_line ('Surname: ' || i.Surname);
END LOOP;
END;
我不知道你想做什么,但你必须选择输出的位置。 PL / SQL脚本不输出数据网格。你只运行它。
您还可以构建一个要验证的函数。例如:
CREATE OR REPLACE FUNCTION IsMinSalary (salary NUMBER)
RETURN NUMBER
IS
defaultMinSalary employees.salary%TYPE := 100;
BEGIN
IF (defaultMinSalary < salary)
THEN
RETURN 0;
ELSE
RETURN 1;
END IF;
END IsMinSalary;
/
SELECT surname
FROM (SELECT 10 AS Salary, 'ten' AS Surname FROM DUAL
UNION ALL
SELECT 100 AS Salary, 'hundred' AS Surname FROM DUAL
UNION ALL
SELECT 200 AS Salary, 'two-hundred' AS Surname FROM DUAL) t -- fake-table
WHERE IsMinSalary (t.salary) = 1