根据 CLP 脚本来创建 PL/SQL 过程和函数

可以根据 命令行处理器 (CLP) 脚本来创建 PL/SQL 过程和函数。

过程

  1. 在 CLP 脚本文件中构造 PL/SQL 过程或函数定义。每个语句均以换行符和正斜杠字符(/)结束。
    另外,还支持其他语句终止字符。
  2. 保存文件。
    在本示例中,文件名是 script.db2
  3. 从 CLP 中执行此脚本。
    如果已使用正斜杠字符或分号来终止语句,请发出以下命令:
    db2 -td/ -vf script.db2
    如果在脚本文件中使用了另一个语句终止字符(例如 @ 字符),那么必须在命令字符串中指定该字符。例如:
    db2 -td@ -vf script.db2

结果

如果没有语法错误,那么该 CLP 脚本应该会执行成功。

示例

以下 CLP 脚本示例创建一个 PL/SQL 函数和过程,然后调用该 PL/SQL 过程。

CONNECT TO mydb
/

CREATE TABLE emp (
     name            VARCHAR2(10),
     salary          NUMBER,
     comm            NUMBER,
     tot_comp        NUMBER
)
/

INSERT INTO emp VALUES ('Larry', 1000, 50, 0)
/
INSERT INTO emp VALUES ('Curly', 200, 5, 0)
/
INSERT INTO emp VALUES ('Moe', 10000, 1000, 0)
/

CREATE OR REPLACE FUNCTION emp_comp (
     p_sal           NUMBER,
     p_comm          NUMBER )
RETURN NUMBER
IS
BEGIN      
    RETURN (p_sal + NVL(p_comm, 0)) * 24;
END emp_comp
/

CREATE OR REPLACE PROCEDURE update_comp(p_name IN VARCHAR) AS
BEGIN      
    UPDATE emp SET tot_comp = emp_comp(salary, comm)
      WHERE name = p_name;
END update_comp
/

CALL update_comp('Curly')
/

SELECT * FROM emp
/

CONNECT RESET
/
此脚本生成以下样本输出:

CALL update_comp('Curly')

  Return Status = 0

SELECT * FROM emp

NAME       SALARY             COMM               TOT_COMP
---------- ------...--------- ----...----------- --------...-------
Larry                    1000                 50                  0
Curly                     200                  5               4920
Moe                     10000               1000                  0

  3 record(s) selected.

下一步做什么

通过进行调用来测试新过程或函数。对于过程,请使用 CALL 语句。对于函数,请执行包含对那些函数的引用的查询或其他 SQL 语句。