2
我在SQL服务器的存储过程2005,它返回三个变量在一个单一的线,是这样的(极度简化的)例子:如何在不使用临时存储过程的结果集中选择一列。表?
CREATE PROCEDURE proc1
AS
DECLARE @col1 VARCHAR(4)
DECLARE @col2 VARCHAR(4)
DECLARE @col3 VARCHAR(4)
SET @col1 = 'val1'
SET @col2 = 'val2'
SET @col3 = 'val3'
SELECT @col1 col1, @col2 col2, @col3 col3
GO
在外部应用程序,我需要执行存储过程和过程三个值之一。由于此应用程序的限制,它将始终只使用第一列。
所以,我正在寻找的是一种方法来限制过程的结果集为一列或重新安排列的顺序。
IIRC MySQL支持像下面的子查询,但SQL Server不:
SELECT col1 FROM (EXEC proc1)
我知道我可以使用临时表(或表变量)来缓冲的结果,然后选择一列,但我希望有更多的“浓缩”的方式莫过于:
CREATE TABLE #tmp (col1 VARCHAR(4) NOT NULL, col2 VARCHAR(4) NOT NULL, col3 VARCHAR(4) NOT NULL)
INSERT INTO #tmp EXEC proc1
SELECT col2 FROM #tmp
DROP TABLE #tmp
预先感谢你可以给任何提示,
帕特里克
非常感谢,您对表格重要功能的暗示的确帮助了我。我不知道它们存在。 – 2011-01-31 11:29:44