这个存储过程为什么不能返回正确值。(20分)

  • 主题发起人 主题发起人 yanghaijun
  • 开始时间 开始时间
Y

yanghaijun

Unregistered / Unconfirmed
GUEST, unregistred user!
我在SQL SEVER 7中创建了如下存储过程:

CREATE PROCEDURE [ReturnAllUser] @param1 int Output
,@param2 int output AS
/**** select * from usermsg ****/
Select @Param1=19023
Select @Param2=345
Return(0)

并在DELPHI主程序中进行调用,正常,如@Param1返回19023。
但当我将注释去掉时,却不能正确返回参数值,如此时@Param1返回0。
请问这是怎么回事,SQL的存储过程不会这么差劲吧?
 
可能是你返回了数据集的缘故, 并且数据集没有查询完.
 
可能?
如果我想在存储过程中先获得数据集,然后再进行一些计算后再返回值,
又该如何做?
 
CREATE PROCEDURE [ReturnAllUser] @param1 int Output
,@param2 int output AS
begin
Select @Param1=19023
Select @Param2=345
Return(0)
end
 
利用临时表, 将结果集放入临时表, 计算完后删除或显示临时表

例如:
CREATE PROCEDURE [ReturnAllUser] @param1 int Output
,@param2 int output AS
begin
select * from usermsg into #TEMP_Table /* 这时不会返回结果集 */
/* 开始处理 */
Select @Param1=19023
Select @Param2=345

/* 往客户端传送返回结果集 */

Select * from #Temp_table

drop table #Temp_table //删除临时

Return(0)
end

 
To SeaSky:
不行,我直接将你的过程Paste到SQLSEVER中,SQLSEVER总是提示错误,说
你提供的语句有问题,into有问题,这又是怎么回事?你试过没有?
 
继续呀,seasky:-)
 
哎呀, 非常抱歉, 没有看到回贴。

写错了一些。

> select * from usermsg into #TEMP_Table
改为
select * into #TEMP_Table from usermsg

SQL的语法真是多变,真烦。:))
 
多人接受答案了。
 
后退
顶部