您的位置:程序门 -> db2 -> 数据库开发



很简单的存储过程,错在哪里?多谢!!!!!!!!!!


[收藏此页] [打印本页]选择字色:背景色:字体:[][][]


很简单的存储过程,错在哪里?多谢!!!!!!!!!!
发表于:2007-05-31 14:41:15 楼主
代码如下:
begin
                    declare   v_i   int;
                    decalre   v_cusid   int;
                    set   v_i   =100;

                    while   v_i> 0   loop

set   v_cusid=(select   max(cus_id)+1   from   c_cus_bas   fetch   first   1   row   only);
insert   into   c_cus_bas(cus_id,cus_typ_id,cus_nam)   values(v_cusid ¦ ¦ ',3,客户 ' ¦ ¦v_cusid);


                              v_i   =   v_i   -1;
                    end   while;
end


我tune   sql总提示:

explain   failed   -   14:40:14
[ibm][cli   driver][db2/nt]   sql0206n     "v_cusid "   在使用它的上下文中无效。     sqlstate=42703


哪儿写错了吗?多谢!
发表于:2007-05-31 15:28:051楼 得分:0
问题出在:
insert   into   c_cus_bas(cus_id,cus_typ_id,cus_nam)   values(v_cusid ¦ ¦ ',3,客户 ' ¦ ¦v_cusid);

你这把v_cusid ¦ ¦ ',3,客户 ' ¦ ¦v_cusid   连成一个字串了,且v_cusid是int你要跟字符连接需要char(v_cusid)转成char,自己想想!!
发表于:2007-05-31 15:50:552楼 得分:0
谢谢楼上的回复,我修改成
insert   into   c_cus_bas(cus_id,cus_typ_id,cus_nam)   values(char(v_cusid) ¦ ¦ ',3,客户 ' ¦ ¦char(v_cusid));
还是报同样的错误。
变量定义有问题吗?
发表于:2007-05-31 15:58:213楼 得分:0
begin
declare   v_i   int;
declare   v_cusid   int;
set   v_i   =100;

while   v_i> 0   loop

set   v_cusid=(select   max(cus_id)+1   from   c_cus_bas   fetch   first   1   row   only);
insert   into   c_cus_bas(cus_id,cus_typ_id,cus_nam)   values(char(v_cusid) ¦ ¦ ',3,客户 ' ¦ ¦char(v_cusid));


v_i   =   v_i   -1;
end   while;
end
发表于:2007-06-04 17:13:084楼 得分:0
你要插入到表中的是三个字段,而values中只有一个表达式:char(v_cusid) ¦ ¦ ',3,客户 ' ¦ ¦char(v_cusid),运算符“ ¦ ¦”是将它左右两边的字符串拼到一起的。
语句“select   max(cus_id)+1   from   c_cus_bas”的结果本来就只有一条记录,“fetch   first   1   row   only”不需要了。

------------------------------
欢迎加入新群db2   dba:10300864。
发表于:2007-06-18 00:23:355楼 得分:0
都已回复。
总结(按自己要求修改便可):
  (1)insert   into   c_cus_bas(cus_id,cus_typ_id,cus_nam)   values(char(v_cusid),char(v_cusid), '客户 ' ¦ ¦char(v_cusid));

(2)while   v_i> 0   loop   应该是   while   v_i> 0   do
发表于:2007-07-02 16:14:336楼 得分:0
该回复于2007-12-29 16:24:29被管理员或版主删除


快速检索

热门点击