在PL / SQL

时间:2018-04-22 14:52:55

标签: plsql

我在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;调用弹出窗口。 相反,我会直接在代码中插入值。

任何人都可以提供帮助吗?

1 个答案:

答案 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