存储过程的一个问题,请教大家,请进--------------------->>

lyq 2004-06-26 03:54:46
CREATE PROCEDURE [dbo].[rk_j]
@billno varchar(30),--流水号
@incode varchar(30),--商品编码
@fname varchar(100),--商品名称
@rsl numeric(18,4), --入库数量
@rdj numeric(18,4) --入库单价
AS

DECLARE
@zsl numeric(18,4),
@zje numeric(18,4),
@sql nvarchar(4000)

set @sql='SELECT TOP 1 @zsl=zsl,@zje=zje FROM djk WHERE (incode =@incode) ORDER BY id DESC'
exec sp_executesql @sql,N' @incode varchar(30),@zsl numeric(18,6),@zje numeric(18,6) output',@incode=@incode,@zsl=@zsl,@zje=@zje output

select @zsl,@zje

GO

以上,返回结果为:

NULL 18.0000
去掉@zsj参数后,@zsl值能够出来。难道这样不能返回多个 值吗?

还有,上边创建过程时的参数与下边定义的参数有什么区别,是不是上边的全局,需要调用时赋值,下边的为临时变量。

...全文
79 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
yangxjn 2004-06-27
  • 打赏
  • 举报
回复
study
threshchong 2004-06-26
  • 打赏
  • 举报
回复
不会换个方法,考虑嘛,不过我想你这个方法也是可以行的通的,不过今天没有时间帮你调试,不好意思,可以给你个见意,不防作个参考,比如:在存储过程里写这个'SELECT TOP 1 @zsl=zsl,@zje=zje FROM djk WHERE (incode =@incode) ORDER BY id DESC',其它的你可以通过delphi中的adostoresproc1这个控件来完成啊(哈哈adostoresproc这个有没有写错啊),不防一试,有时可以变通一下考虑问题,不需要钻在里面否则耽误开发时间.
drunkboy 2004-06-26
  • 打赏
  • 举报
回复
帮你顶!
lyq 2004-06-26
  • 打赏
  • 举报
回复
悲衷啊
juliens 2004-06-26
  • 打赏
  • 举报
回复
帮你顶!

5,391

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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