我有一个带输入和输出参数的存储过程。
CREATE PROC [dbo].[pr_MySP]
@date DATETIME,
@usd MONEY OUTPUT
WITH ENCRYPTION
AS
BEGIN
...
END
GO
此存储过程调用另一个存储过程,因此我无法创建UDF来执行此操作。现在我需要将此proc结果用作另一个select中的列。有点喜欢这个
select *, ([dbo].[pr_MySP] result) from ...
有没有办法做到这一点?
答案 0 :(得分:0)
对于一次SP跑:
--Declare variables to hold output
DECLARE @usdout MONEY
--Exec SP and hold value
EXEC pr_MySP @date = null, @usd = @usdout OUT
--Use received value in normal SELECT
select *, @usdout from ...
对于多行运行,请在此处检查可能的方法:How do I execute a stored procedure once for each row returned by query?
例如,可以使用游标,在每个循环中在临时表中插入新数据然后加入。
答案 1 :(得分:0)
将SP结果插入临时表:
create table #t (result ...)
declare @date datetime = getdate()
declare @usd money
insert into #t exec [dbo].[pr_MySP] @date = @date, @usd = @usd output
select * from #t
答案 2 :(得分:0)
您不必像sp那样将功能作为一列执行
CREATE FUNCTION fn_Function (@Id)
(
-- Add the parameters for the function here
@param varchar(1000)
)
RETURNS TABLE
AS
RETURN
(
SELECT @param as Value
)
GO
然后您可以将sp写为
SELECT *,fn_Function(TBL.Id)FROM tbl_Table TBL