当前位置: 代码迷 >> DB2 >> 问个存储过程的有关问题
  详细解决方案

问个存储过程的有关问题

热度:2513   发布时间:2013-02-26 00:00:00.0
问个存储过程的问题
在IBM的教程中看到如下的存储过程
SQL code
CREATE PROCEDURE myProc1 (IN   p_varOne  INT,                          OUT  p_varTwo  INT)LANGUAGE SQL BEGIN    DECLARE v_varUno INT DEFAULT 0;        -- (1)    SET v_varUno = 1 + p_varOne;    SET p_varTwo - v_varUno * p_varOne;END@    -- (2)


1.请问2处得@有什么用?
2.假设该脚本存放在一个名为 myprocs.db2 的文件中,那么可以在 DB2 Command Line Processor (CLP) 中使用以下命令执行该脚本:db2 -t -v -f myprocs.db2

DB2 将在 (1) 处停下来,将其当作一个命令,并产生一个错误。为了避免这个问题,需要指定所使用的命令终止符 —— 在这里是 @ 字符。为了让上面的脚本能成功地执行,需要使用以下命令:
db2 -td@ -v -f myprocs.db2。
  我想知道1处为什么会停下来呢,和2出的@又有什么关系?

------解决方案--------------------------------------------------------
@是存储过程结束符

如果命令没有指定结束符是什么(db2 -t -v -f myprocs.db2),就以;结束(1)位置
在指定了@之后(db2 -td@ -v -f myprocs.db2),就以@结束(2)位置
------解决方案--------------------------------------------------------
自己设置的结束符。
------解决方案--------------------------------------------------------
如果不指定@为结束符,那么执行语句至分号时就结束
  相关解决方案