如何在SqlServer中的另一个过程中使用一个过程的结果?

发布于 2024-10-30 14:16:56 字数 563 浏览 1 评论 0原文

我正在尝试将结果与一些 SELECT 组合起来。
我想将 @result[proc_Get_Frame_CourseNum] 过程的结果结合起来设置,但它不起作用。

declare @str varchar(300)
declare @result varchar(200)
declare @temp varchar(20)
declare @i int
set @str='110,120,130,140'
set @result=''
set @temp=''
set @i=0
while @i<len(@str)/4+1
begin
    set @temp=substring(@str,1,3)
    set @str=substring(@str,2,len(@str))
    set @result=@result+  exec [proc_Get_Frame_CourseNum] @temp 
    set @i=@i+1
end
select @temp

I'm trying to combine a result mixed with some SELECTs.
I wanted to set @result combined with the result of [proc_Get_Frame_CourseNum] procedure but It didn't work.

declare @str varchar(300)
declare @result varchar(200)
declare @temp varchar(20)
declare @i int
set @str='110,120,130,140'
set @result=''
set @temp=''
set @i=0
while @i<len(@str)/4+1
begin
    set @temp=substring(@str,1,3)
    set @str=substring(@str,2,len(@str))
    set @result=@result+  exec [proc_Get_Frame_CourseNum] @temp 
    set @i=@i+1
end
select @temp

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

梦醒灬来后我 2024-11-06 14:16:57

就我个人而言,我会利用输出变量

CREATE PROCEDURE proc_Get_Frame_CourseNum
    @temp varchar(20),
    @outValue varchar(50) OUTPUT
AS
BEGIN
    --do stuff

    --before you leave the method or do your final SELECT
    SET @outValue = 'whatever your result is'

    --more stuff
END

然后在您的代码中,您只需执行以下操作:

DECLARE @outValue VARCHAR(20)

-- rest of your code

EXEC [proc_Get_Frame_CourseNum] @temp, @outValue OUT
SET @result = @result + @outValue

或者,您可以将 SP 的结果转储到临时表中,然后从中读取到您的 @Result 变量中。

Personally, I'd make use of output variables

CREATE PROCEDURE proc_Get_Frame_CourseNum
    @temp varchar(20),
    @outValue varchar(50) OUTPUT
AS
BEGIN
    --do stuff

    --before you leave the method or do your final SELECT
    SET @outValue = 'whatever your result is'

    --more stuff
END

Then in your code, you just go:

DECLARE @outValue VARCHAR(20)

-- rest of your code

EXEC [proc_Get_Frame_CourseNum] @temp, @outValue OUT
SET @result = @result + @outValue

Alternatively, you could just dump the results of the SP into a temp table, then read from it into your @Result variable.

等你爱我 2024-11-06 14:16:57

您无法通过附加一个过程的结果来对其结果进行插值。
我现在假设 [proc_Get_Frame_CourseNum] 返回标量结果。

因此,在另一批批处理中运行 exec [proc_Get_Frame_CourseNum] @temp (在 set @result = @result + call 之前)

您的查询应该如下所示,

<块引用>

声明@scalarResult = exec [proc_Get_Frame_CourseNum] @temp
设置@result=@result+@scalarResult

You can't interpolate the result of one procedure by appending it.
I am assuming now that [proc_Get_Frame_CourseNum] returns a scalar result.

So run exec [proc_Get_Frame_CourseNum] @temp in another line of batch (before set @result = @result + call)

Your query should look like,

declare @scalarResult = exec [proc_Get_Frame_CourseNum] @temp
set @result=@result+ @scalarResult

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文