0

これを行う方法が見つかりませんでした。次の処理を行う大きな SQL ステートメントがあります。

  1. 2 つの一時テーブルをチェックし、見つかった場合はそれらを削除します
  2. ローカル変数を宣言します
  3. ローカル変数を設定する
  4. #tmp1 (一時テーブル) に挿入する SQL statement1 を実行します
  5. #tmp2 (一時テーブル) に挿入する SQL statement2 を実行します
  6. #tmp1 と #temp2 (一時テーブル) から選択してピボット結果を返す SQL statement3 を実行します

これをクエリ ウィンドウで実行しても問題なく動作しますが、1 つの関数 (または何か) で同じことを実行したいと考えています。

EDIT1:Excelからテーブル関数を呼び出してそれらの結果を返すことができるようですが、Excelからストアドプロシージャを呼び出すことができず、エラーが発生します。テーブル関数の問題は、テーブルを削除 (ドロップ) できないことです。

4

1 に答える 1

1
CREATE PROCEDURE dbo.OneFunction AS

--Checks for two temp tables, if found delete them
IF OBJECT_ID('#Frob') IS NOT NULL  
    DROP #Frob
IF OBJECT_ID('#Grob') IS NOT NULL
    DROP #Grob

--Declare local variables
DECLARE @some int;
DECLARE @localVariables nvarchar(max);

--Sets local variables
SET @some = 69;
SET @localVariables = N'Tĥḗ qᴜįċᴋ ᶀʀᴏᴡɴ ƒᴏx ᴊᴜᴍᴘěɖ ᴏᴠḝʀ'  

--runs SQL statement1 which inserts into #tmp1 (temp table)
INSERT INTO #tep1
SELECT 'Hi'

--runs SQL statement2 which inserts into #tmp2 (temp table)
INSERT INTO #tmp2
SELECT 'Low'

--runs SQL statement3 which selects from #tmp1 and #temp2 (temp table) and returns pivot results
SELECT *
FROM #tmp1
   FULL OUTER JOIN #tmp2 ON 1=1
PIVOT BY SOMEONE WHO KNOWS THE INSANE PIVOT SYNTAX

: すべてのコードはパブリック ドメインにリリースされます。帰属は必要ありません。

于 2013-09-17T21:04:56.680 に答える