从命令行创建 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其中,terminating-character 是在要运行的 CLP 脚本文件 CLP-script-name 中使用的终止符。
Db2 CLP 选项 -td 指示以 terminating-character 重置 CLP 缺省终止符。-vf 指示将使用 CLP 的可选详细 (-v) 选项,这会导致脚本中的每个 SQL 语句或命令运行时显示到屏幕上,同时显示执行这些语句或命令所生成的输出。-f 选项指示命令的目标为文件。
要运行第一步中显示的特定脚本,请从系统命令提示符发出以下命令:
db2 -td@ -vf myCLPscript.db2