DB2 从命令行创建SQL存储过程

从命令行创建 SQL 过程

开始之前

  • 用户必须具有对 SQL 过程执行 CREATE PROCEDURE 语句所需的特权。

  • 执行过程的 SQL 过程体内包括的所有 SQL 语句的特权。

  • SQL 过程的 CREATE PROCEDURE 语句中引用的数据库对象必须存在,才能执行该语句。

过程

  • 对命令行处理器 (DB2® CLP) 选择缺省终止符以外的备用终止符,以在下一步中要预编译的脚本中使用,缺省终止符为分号(“;”)。

    CLP 必须能够区分出现在例程体的 CREATE 语句内的 SQL 语句结尾和 CREATE PROCEDURE 语句本身的结尾。分号字符必须用于在 SQL 例程体中终止 SQL 语句,所选备用终止符应该用于终止 CREATE 语句及可能包含在 CLP 脚本中的任何其他 SQL 语句。

    例如,在以下 CREATE PROCEDURE 语句中,“at;”符号(“@”)用作 DB2 CLP 脚本 myCLPscript.db2 的终止符:

        CREATE PROCEDURE UPDATE_SALARY_IF
        (IN employee_number CHAR(6), IN rating SMALLINT)
        LANGUAGE SQL
        BEGIN
          DECLARE not_found CONDITION FOR SQLSTATE '02000';
          DECLARE EXIT HANDLER FOR not_found
             SIGNAL SQLSTATE '20000' SET MESSAGE_TEXT = 'Employee not found';
    
          IF (rating = 1)
            THEN UPDATE employee
              SET salary = salary * 1.10, bonus = 1000
              WHERE empno = employee_number;
          ELSEIF (rating = 2)
            THEN UPDATE employee
              SET salary = salary * 1.05, bonus = 500
              WHERE empno = employee_number;
          ELSE UPDATE employee
              SET salary = salary * 1.03, bonus = 0
              WHERE empno = employee_number;
          END IF;
        END
    @
  • 使用以下 CLP 命令从命令行运行包含 CREATE PROCEDURE 语句的 DB2 CLP 脚本:

    db2 -td terminating-character -vf CLP-script-name

    其中 终止符 是在要运行的 CLP 脚本文件 CLP-脚本名 中使用的终止符。

    DB2 CLP 选项 -td 指示将使用终止符复位 CLP 终止符缺省值。-vf 指示将使用 CLP 的可选冗余(-v)选项,这会导致脚本中的每个 SQL 语句或命令运行时显示到屏幕上,同时显示执行这些语句或命令所生成的输出。-f 选项指示命令的目标为文件。

    要运行第一步中显示的特定脚本,请从系统命令提示符发出以下命令:

    db2 -td@ -vf myCLPscript.db2

相关参考:
CREATE FUNCTION(SQL 标量、表或行)语句

CREATE PROCEDURE (SQL) 语句

CREATE TYPE(结构化)语句


注意事项&小结:

由于db2look默认的分隔符是分号(;),而导出的存储过程之间也是以分号相隔。

为了db2命令行(CLP)从文件读取ddl编译存储过程,需要以一个非分号的分隔符,来分隔不同的存储过程,一般是@符放在END后面。




你可能感兴趣的:(DB2 从命令行创建SQL存储过程)