关于在SELECT 执行存储过程的问题

t16qxz 2009-08-27 09:18:36
请问各位怎么样在SELECT里执行存储过程啊?
...全文
409 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
jinjazz 2009-08-27
  • 打赏
  • 举报
回复
openrowset不支持参数

但是如果是开发语言的话,可以用程序拼出来需要的openrowset 参数作为常量传入。否则光用sqlserver的话就不行了。

水族杰纶 2009-08-27
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 jinjazz 的回复:]
openrowset

比如

select * from openrowset('SQLOLEDB','Server=.;Trusted_Connection=yes;', 'exec(''select * from sysobjects'')')


[/Quote]
jinjazz
請教下
openrowset 怎麼處理帶參數的存儲過程
曾經試過,有參數的時候,失敗
yelei2009 2009-08-27
  • 打赏
  • 举报
回复
exec
jinjazz 2009-08-27
  • 打赏
  • 举报
回复
openrowset

比如

select * from openrowset('SQLOLEDB','Server=.;Trusted_Connection=yes;', 'exec(''select * from sysobjects'')')

q85958341 2009-08-27
  • 打赏
  • 举报
回复
exec prc_test tb.id
先获得存储过程结果
再拼装
select @test from tb
t16qxz 2009-08-27
  • 打赏
  • 举报
回复
...大家继续啊
t16qxz 2009-08-27
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 feixianxxx 的回复:]
引用 8 楼 t16qxz 的回复:
好像SELECT里是不允许执行存储过程的?那函数的语法又限制。。妈的。

你的存储过程 显示的是什么 还是返回什么?
[/Quote]


返还一个值。
feixianxxx 2009-08-27
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 t16qxz 的回复:]
好像SELECT里是不允许执行存储过程的?那函数的语法又限制。。妈的。
[/Quote]
你的存储过程 显示的是什么 还是返回什么?
t16qxz 2009-08-27
  • 打赏
  • 举报
回复
好像SELECT里是不允许执行存储过程的?那函数的语法又限制。。妈的。
jeansy911 2009-08-27
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 jeansy911 的回复:]
引用 3 楼 t16qxz 的回复:
但是我存储过程的参数必须是一个里面的字段啊。例如:存储过程 prc_test
select  exec prc_test tb.id  from tb
这样写?

exec prc_test
存储过程名称后面加空格,还可以追加参数
[/Quote]
exec prc_test 字段

还得看你的过程里面是怎么申明参数的。
t16qxz 2009-08-27
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 wufeng4552 的回复:]
改成函數
[/Quote]

我也想。。但是函数有很多语法限制啊。




create function [dbo].[fn_GetFS]
(
@Date char(10) ,
@bkprname varchar(20)
)
RETURNS int
AS
BEGIN

DECLARE @Result int
exec @Result=getfs @Date,@bkprname
return @Result

END

只有函数和扩展存储过程才能从函数内部执行。。。结果抱这个错
jeansy911 2009-08-27
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 t16qxz 的回复:]
但是我存储过程的参数必须是一个里面的字段啊。例如:存储过程 prc_test
select  exec prc_test tb.id  from tb
这样写?
[/Quote]
exec prc_test
存储过程名称后面加空格,还可以追加参数

水族杰纶 2009-08-27
  • 打赏
  • 举报
回复
改成函數
t16qxz 2009-08-27
  • 打赏
  • 举报
回复
但是我存储过程的参数必须是一个里面的字段啊。例如:存储过程 prc_test
select exec prc_test tb.id from tb
这样写?
--小F-- 2009-08-27
  • 打赏
  • 举报
回复
exec执行
htl258_Tony 2009-08-27
  • 打赏
  • 举报
回复
不用SELECT,直接用EXEC.

在SELECT里面执行调用的可以用自定义函数.
carlxuan 2009-08-27
  • 打赏
  • 举报
回复
declare @result varchar(10)
exec test_procedure input, @result output
select @result

是不是要这个阿?

34,590

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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