PB中调用SQL SERVER2000存储过程出现“尝试启动新的SQL SERVER操作,结果未决”的错误
在SQL SERVER2000中创建存储过程如下,在查询分析器中
exec sp_shuzucharu '>2#0.50#2003-9-27 07:00:00#1#2$2#1.00#2003-9-27 08:00:00#1#2$'结果正确
但是在PB中调用该存储过程时
if sqlca.sqlcode<>0 then
messagebox("","fail to connect !")
end if
string str_string
declare sp_array_insert procedure for sp_shuzucharu
@str_string=:str_string
using sqlca;
str_string='>2#0.50#2003-9-27 07:00:00#1#2$2#1.00#2003-9-27 08:00:00#1#2$2#1.00#2003-9-27 09:00:00#1#2$2#1.00#2003-9-27 10:00:00#1#2$2#0.50#2003-9-27 11:00:00#1#2$2#1.00#2003-9-27 14:00:00#1#2$2#1.00#2003-9-27 15:00:00#1#2$'/*上述字符串没有问题*/
execute sp_array_insert;
messagebox("",sqlca.sqlcode)
commit using sqlca ;
messagebox("",sqlca.sqlerrtext)
messagebox('','end')
但是sqlca.sqlerrtext会报“尝试启动新的SQL SERVER操作,结果未决”的错误
盼各位大侠不吝赐教
附存储过程如下:
/*调用时将数组转化为字符串,在此处将字符串还原为数组并插入表(w_capacity)*/
/* >表示开始,数组之间用$表示,数组内部用#表示,结束用<表示*/
CREATE PROCEDURE sp_shuzucharu
@str_string varchar(5000)
AS
--select @i
--select @str_string
declare @i int
declare @j int
declare @bite varchar(1)
declare @wcid varchar(20)
declare @capacity varchar(10)
declare @start1 varchar (20)
declare @itemid varchar(20)
declare @operid varchar(6)
declare @item_capacity float
declare @start_time datetime
declare @oper_id int
declare @leng int
declare @fj float
declare @fm float
declare @m int
declare @mod1 float
set @leng=len(@str_string)//取得字符串长度
set @i=1
set @j=0
set @fj=0 /*float类型*/
set @wcid=''
set @capacity=''
set @start1=''
set @itemid=''
set @operid=''
select @leng
while (@i<=@leng)
begin
set @bite=substring(@str_string,@i,1)//每次取一个字符
--select @bite
if @bite='>'
begin
goto nexti
end
/*数组之间 */
if @bite='$'
begin
--select @capacity,@start
set @item_capacity=cast(@capacity as float)
set @start_time=cast(@start1 as datetime)
set @oper_id=cast(@operid as int)
insert into w_capacity_paichan
(wc_id,datet,item_capacity,itemwc,item_id,oper_id)
values(@wcid,@start_time,@item_capacity,'实际能 力',@itemid,@oper_id);
set @wcid=''
set @capacity=''
set @start1=''
set @itemid=''
set @operid=''
set @j=@j+1
set @fj=@fj+1
goto nexti
end
/*数组之间内部 */
if @bite='#'
begin
set @j=@j+1
set @fj=@fj+1
goto nexti
end
set @fm=@fj/5
set @m=@j/5
set @mod1=@fm-@m/*好像不支持MOD取余*/
if @mod1>=-0.05 and @mod1<0.05--余0
begin
set @wcid =@wcid+@bite
end
else if @mod1>0.15 and @mod1<0.25--余1
begin
set @capacity=@capacity+@bite
end
else if @mod1>0.35 and @mod1<0.45--/*余2*/
begin
set @start1=@start1+@bite
end
else if @mod1>0.55 and @mod1<0.65/*余3*/
begin
set @itemid=@itemid+@bite
end
else if @mod1>0.75 and @mod1<0.85
begin
set @operid=@operid+@bite
end
nexti:
set @i=@i+1
end
GO