我有一个带有输入和输出参数的存储过程。
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 ...
有没有办法做到这一点?
发布于 2018-02-27 10:38:03
对于一个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?
例如,可以使用游标,在每个循环中插入新数据到临时表中,然后连接它。
发布于 2018-02-27 14:40:23
将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
发布于 2019-07-09 08:52:59
您必须以列的形式执行函数,而不是仅执行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
https://stackoverflow.com/questions/49006587
复制