gpt4 book ai didi

sql-server - 从存储过程的结果集中选择列

转载 作者:行者123 更新时间:2023-12-01 16:16:19 25 4
gpt4 key购买 nike

我有一个返回 80 列和 300 行的存储过程。我想编写一个获取其中 2 列的选择。类似的东西

SELECT col1, col2 FROM EXEC MyStoredProc 'param1', 'param2'

当我使用上述语法时,出现错误:

"Invalid Column Name".

我知道最简单的解决方案是更改存储过程,但它不是我写的,我也无法更改它。

有什么办法可以做我想做的事吗?

  • 我可以创建一个临时表来放入结果,但因为有 80 列,所以我需要创建一个 80 列临时表才能获取 2 列。我想避免追踪所有返回的列。

  • 我尝试按照 Mark 的建议使用 WITH SprocResults AS ....,但出现 2 个错误

    Incorrect syntax near the keyword 'EXEC'.
    Incorrect syntax near ')'.

  • 我尝试声明一个表变量,但出现以下错误

    Insert Error: Column name or number of supplied values does not match table definition

  • 如果我尝试
    SELECT * FROM EXEC MyStoredProc 'param1', 'param2'
    我收到错误:

    Incorrect syntax near the keyword 'exec'.

最佳答案

您可以拆分查询吗?将存储过程结果插入表变量或临时表。然后,从表变量中选择 2 列。

Declare @tablevar table(col1 col1Type,..
insert into @tablevar(col1,..) exec MyStoredProc 'param1', 'param2'

SELECT col1, col2 FROM @tablevar

关于sql-server - 从存储过程的结果集中选择列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/209383/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com