首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >TSQL存储过程结果作为另一个select中的列

TSQL存储过程结果作为另一个select中的列
EN

Stack Overflow用户
提问于 2018-02-27 18:35:57
回答 3查看 286关注 0票数 0

我有一个带有输入和输出参数的存储过程。

代码语言:javascript
运行
复制
CREATE PROC [dbo].[pr_MySP]
    @date DATETIME,
    @usd MONEY OUTPUT
WITH ENCRYPTION
AS
BEGIN
    ...
END
GO

这个存储过程调用另一个存储过程,所以我不能创建UDF来做这件事。现在我需要使用这个proc结果作为另一个select中的列。像这样的东西

代码语言:javascript
运行
复制
select *, ([dbo].[pr_MySP] result) from ... 

有没有办法做到这一点?

EN

回答 3

Stack Overflow用户

发布于 2018-02-27 18:38:03

对于一个SP运行:

代码语言:javascript
运行
复制
--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?

例如,可以使用游标,在每个循环中插入新数据到临时表中,然后连接它。

票数 0
EN

Stack Overflow用户

发布于 2018-02-27 22:40:23

将SP结果插入临时表:

代码语言:javascript
运行
复制
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
票数 0
EN

Stack Overflow用户

发布于 2019-07-09 16:52:59

您必须以列的形式执行函数,而不是仅执行sp

代码语言:javascript
运行
复制
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编写为

代码语言:javascript
运行
复制
SELECT *,fn_Function(TBL.Id)FROM tbl_Table TBL
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49006587

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档