关于delphi连接存储过程的错误(50分)

  • 主题发起人 主题发起人 babyboom
  • 开始时间 开始时间
B

babyboom

Unregistered / Unconfirmed
GUEST, unregistred user!
我用delphi的ADOStoredProc连接sql server 2000的pubs数据库。调用自己写的存储过程。

总是报如下错误

ADOStoredProc1:CommandText does not return a result set.
好像跟返回值有关系。如果存储过程没有返回值就不报错。但是有返回值就报错。

存储过程如下,已通过测试:
---------------------------------------------


create procedure get_sales_for_title @title varchar(80)=NULL,@ytd_sales int output
as
if @title is null
begin
print 'error:You must specify a title value.'
return(1)
end
else
begin
if (select count(*) from titles where title=@title)=0
return(2)
end
select @ytd_sales =ytd_sales
from titles where title=@title
if @@error<>0
begin
return(3)
end
else
begin
if @ytd_sales is null
return(4)
else
return(0)
end
GO

 
你的存储过程没有问题,问题在你调用这个过程上,。把另一段DELPHI代码贴上来吧,
 
你肯定用了ADOStoredProc1.active:=true; 或open等语句来执行的存储过程。
这样打开只有在有结果集返回的时候适用。你的存储过程不返回结果集,只返回一个值而已
所以要报错。
你应该用execproc来执行,然后访问@return_value(d6下), 或者传入一个output参数。
如果非要用active:=true等来打开的话,把你的存储过程最后用一个select 语句来返回
你需要的结果,然后按结果集的方式进行访问吧。
如select 4 返回了4这个结果集!
 
shangshang
果然是高手一语中的
 
多人接受答案了。
 
后退
顶部