私は、それが1つの行に三つの変数を返すSQL Server 2005でストアドプロシージャを有し、この(非常に簡略化された)の例のように外部アプリケーションにおいてtempを使用せずにストアドプロシージャの結果セットから1つの列をSELECTする方法テーブル?
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
、私は、ストアドプロシージャおよびプロセスを実行する必要3つの値のうちの1つ。このアプリケーションの制限により、常に最初の列のみが使用されます。
私が探しているのは、プロシージャーの結果セットを1つの列に限定するか、列の順序を並べ替える方法です。
IIRC MySQLは、以下のようなサブクエリをサポートしていますが、SQL Serverがない:
SELECT col1 FROM (EXEC proc1)
私は結果をバッファする一時テーブル(またはテーブル変数)を使用して、1列を選択することができることを知っているが、私はこれ以上「凝縮」方法があることを願っています:あなたが与えることができる任意のヒントを事前に
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
おかげで、
パトリック
ありがとう、テーブル値関数のヒントは本当に私を助けました。私は彼らが存在していることを知らなかった。 –