PB中调用SQL SERVER2000存储过程出现“尝试启动新的SQL SERVER操作,结果未决”的错误

jiyongqing 2003-10-07 10:23:32
在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
...全文
681 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
chmj718 2003-12-22
  • 打赏
  • 举报
回复
是这样的,我以前也碰到过的,也搞了很长时间,记得后来发现是在执行存储过程之后要
close 存储过程变量;

这是很容易疏忽的错误,,因为它不需要 OPEN 就FETCH了!
sinkiangscorpio 2003-12-22
  • 打赏
  • 举报
回复
gz
dtljf 2003-12-16
  • 打赏
  • 举报
回复
我在运行存储过程后,也有相同的提示
1.“尝试启动新的SQL SERVER操作,结果未决”
2."A SQLServer request resulted in a bad return code or status but no error message was returned"

请高手帮忙...
jdsnhan 2003-10-08
  • 打赏
  • 举报
回复
同样的疑问,是否正确的连接了数据库。
愉快的登山者 2003-10-08
  • 打赏
  • 举报
回复
执行前,是否进行了数据库的正常连接。

754

社区成员

发帖
与我相关
我的任务
社区描述
PowerBuilder 数据库相关
社区管理员
  • 数据库相关社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧