如何获取动态存储过程的返回值(高分求解)

qwa 2005-06-17 09:47:53
drop proc abb
go
create proc abb

as
return 999
go

declare @s nvarchar(400)
DECLARE @RET INT

SET @S = 'EXEC @RET=abb '
EXEC sp_executesql @S,N'@RET INT output',@RET

select @ret
_______________________________________________
请问,我该用什么方法才能获取这个return的值
...全文
179 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
qwa 2005-06-17
  • 打赏
  • 举报
回复
我晕,你们有没有做过测试啊

不过还是感谢你们

远程函数的调用
select 连接服务器名.dbo.abb()
服务器: 消息 117,级别 15,状态 1,行 1
对象名 'zbkf01.dbo.abb' 无效。

select zbkf01.zbttfdbp.dbo.abb()
服务器: 消息 117,级别 15,状态 1,行 1
对象 名称 'zbkf01.zbttfdbp.dbo.' 包含的前缀数目超过了最大值。最大值为 2。
xr105 2005-06-17
  • 打赏
  • 举报
回复
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_NULLS ON
GO
SET ANSI_WARNINGS ON
GO
---------------------------------------------------------------------------
EXEC SP_ADDLINKEDSERVER 'SERVER123','','SQLOLEDB','192.168.1.123'
EXEC SP_ADDLINKEDSRVLOGIN 'SERVER123','FALSE',NULL,'SA','9588'
---------------------------------------------------------------------------

---------------------------------------------------------- \
exec SERVER123.[数据库].[dbo].[过程名]
select SERVER123.[数据库].[dbo].[函数名]


GO
EXEC SP_DROPLINKEDSRVLOGIN 'SERVER123','SA'
GO
EXEC SP_DROPSERVER 'SERVER123','DROPLOGINS'
GO
hsj20041004 2005-06-17
  • 打赏
  • 举报
回复
先建立一个连接服务器
select 连接服务器名.dbo.abb()
qwa 2005-06-17
  • 打赏
  • 举报
回复
可我这个是远程调用的,调用另一台机子上的存储过程啊,如果改成函数,那么怎么调用远程函数呢
hsj20041004 2005-06-17
  • 打赏
  • 举报
回复
---象你这种情况,应该写函数
create function abb()
returns int
as
begin
return 999
end

select dbo.abb()
qwa 2005-06-17
  • 打赏
  • 举报
回复
不用动态写,我也知道该怎么做
但是现在一定得用动态SQL调用那个存储过程
各位请帮忙啊
hsj20041004 2005-06-17
  • 打赏
  • 举报
回复
drop proc abb
------带输出参数的存储过程
create proc abb(@a int out)

as
select @a=999
go

declare @aa int
exec dbo.abb @aa out
select @aa
hsj20041004 2005-06-17
  • 打赏
  • 举报
回复

declare @aa int
exec dbo.abb @aa out
select @aa
lsxaa 2005-06-17
  • 打赏
  • 举报
回复
试试

select * from exec abb
qwa 2005-06-17
  • 打赏
  • 举报
回复
多谢
hanya1980 2005-06-17
  • 打赏
  • 举报
回复
在定义sp_executesql存储过程参数时必须注意前后输入输出定义的一致性
hanya1980 2005-06-17
  • 打赏
  • 举报
回复
declare @s nvarchar(400)
DECLARE @RET INT

SET @S = 'EXEC @RET=abb '
EXEC sp_executesql @S,N'@RET INT output',@RET OUTPUT

select @ret
qwa 2005-06-17
  • 打赏
  • 举报
回复
难道没人帮我吗

27,579

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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