来自usp结果的sql查询

时间:2009-06-16 19:17:53

标签: sql nested-queries

如何查询存储过程的结果?

这是我的例子:

sp_columsn 'tblSomeTableName' --// Returns a recordset

select COLUMN_NAME from [sp_columns 'tblSomeTableName'] --// Raises an error saying "Invalid object name 'sp_columns 'tblSomeTableName''."

2 个答案:

答案 0 :(得分:2)

只要知道存储过程结果的结构,就可以创建一个表(temp,variable等)并将执行存储过程执行到表中。

CREATE TABLE #MyTestTable
(TABLE_QUALIFIER sysname, 
TABLE_OWNER sysname, 
TABLE_NAME sysname, 
COLUMN_NAME sysname, 
DATA_TYPE smallint, 
TYPE_NAME sysname, 
PRECISION int, 
LENGTH int, 
SCALE smallint, 
RADIX smallint, 
NULLABLE smallint, 
REMARKS varchar(254), 
COLUMN_DEF nvarchar(4000), 
SQL_DATA_TYPE smallint, 
SQL_DATETIME_SUB smallint, 
CHAR_OCTET_LENGTH int, 
ORDINAL_POSITION int, 
IS_NULLABLE varchar(254), 
SS_DATA_TYPE tinyint)

INSERT  #MyTempTable
EXEC    sp_columns 'tblSomeTableName'

SELECT  COLUMN_NAME
FROM    #MyTempTable
WHERE   ...

答案 1 :(得分:1)

您可以执行环回查询,但请注意它会打开与同一服务器的另一个连接

SELECT *
      FROM OPENROWSET ('SQLOLEDB','Server=(local);TRUSTED_CONNECTION=YES;',
    'set fmtonly off exec master.dbo.sp_who')

另见:Store The Output Of A Stored Procedure In A Table Without Creating A Table