相关疑难解决方法(0)

将存储过程的结果插入临时表

我该怎么办SELECT * INTO [temp table] FROM [stored procedure]?不FROM [Table],没有定义[temp table]

Select所有数据都可以BusinessLine正常tmpBusLine工作.

select *
into tmpBusLine
from BusinessLine
Run Code Online (Sandbox Code Playgroud)

我尝试相同,但使用stored procedure返回数据,并不完全相同.

select *
into tmpBusLine
from
exec getBusinessLineHistory '16 Mar 2009'
Run Code Online (Sandbox Code Playgroud)

输出消息:

消息156,级别15,状态1,行2关键字'exec'附近的语法不正确.

我已经阅读了几个创建一个与输出存储过程结构相同的临时表的例子,它工作正常,但不提供任何列会很好.

sql t-sql sql-server stored-procedures sql-server-2005

1526
推荐指数
24
解决办法
189万
查看次数

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

我有一个存储过程返回80列和300行.我想写一个选择,获得其中2列.就像是

SELECT col1, col2 FROM EXEC MyStoredProc 'param1', 'param2'
Run Code Online (Sandbox Code Playgroud)

当我使用上面的语法时,我得到错误:

"无效的列名称".

我知道最简单的解决方案是更改存储过程,但我没有写它,我无法改变它.

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

  • 我可以创建一个临时表来放置结果,但因为有80列所以我需要制作一个80列的临时表来获得2列.我想避免追踪返回的所有列.

  • WITH SprocResults AS ....按照马克的建议尝试使用,但我遇到了2个错误

    关键字"EXEC"附近的语法不正确.
    ')'附近的语法不正确.

  • 我尝试声明一个表变量,我得到以下错误

    插入错误:列名或提供的值数与表定义不匹配

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

    关键字'exec'附近的语法不正确.

t-sql sql-server select stored-procedures

426
推荐指数
12
解决办法
62万
查看次数

从存储过程Transact-SQL SQL Server中访问结果集

我正在使用SQL Server 2005,我想知道如何从transact-sql中访问不同的结果集.以下存储过程返回两个结果集,如何从例如另一个存储过程访问它们?

CREATE PROCEDURE getOrder (@orderId as numeric) AS
BEGIN   
    select order_address, order_number from order_table where order_id = @orderId
    select item, number_of_items, cost from order_line where order_id = @orderId
END
Run Code Online (Sandbox Code Playgroud)

我需要能够单独遍历两个结果集.

编辑:只是澄清问题,我想测试存储过程.我有一组从VB.NET客户端使用的存储过程,它返回多个结果集.这些不会被改为表值函数,实际上我根本无法改变程序.更改程序不是一种选择.

过程返回的结果集与数据类型或列数不同.

sql t-sql sql-server

36
推荐指数
3
解决办法
6万
查看次数