我有一个存储过程,我正在尝试从中选择所有行。
SELECT * FROM dbo.SEL_My_Func 'arg1','arg2','ar3'
没有用。所以我也试过了:
SELECT * FROM EXEC dbo.SEL_My_Func 'arg1','arg2','ar3'
但这也没有用。如何测试我的存储过程返回正确的结果?
我必须使用proc而不是函数,因为我有一个ORDER BY作为SQL的一部分,请参阅:Selecting first row per group
最后,我认为限制从存储的probc返回哪些列没有问题,你只能指定哪些行(否则你会更好地使用SQL函数)?
答案 0 :(得分:3)
您正在使用的解决方案无法正常工作:
有解决方法
SELECT a.[1], a.[2]
FROM OPENROWSET('SQLOLEDB','myserver';'sa';'mysapass',
'exec mydatabase.dbo.sp_onetwothree') AS a
或在两个查询中拆分您的任务
Declare @tablevar table(col1,..
insert into @tablevar(col1,..) exec MyStoredProc 'param1', 'param2'
SELECT col1, col2 FROM @tablevar
答案 1 :(得分:1)
EXEC dbo.SEL_My_Func 'arg1','arg2','ar3'
答案 2 :(得分:0)
您对功能的假设不正确。您可以使用分区功能选择组中的第一行。
以下是查找每个客户的第一个dealer_id的示例:
select client, dealer_id
from (
select client, dealer_guid
, RANK() over ( partition by client order by dealer_id) as rnk
from Dealers
) cd where rnk = 1
这也可以通过函数调用以及表(我的示例)来完成。