こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

T-SQLの sp_executesql について

SQL-Serverでストアドプロシージャを作っています。

EXEC sp_executesql で検索結果をテーブル型変数に格納したいですができるのでしょうか。動的にSQLを発行し、結果を格納する必要がありますのでEXEC sp_executesqlを使わざる得ない状況です。下記にそのサンプルがあります。

Declare @tblAA Table(NO int)

declare @strSQL nVarChar(1000)
set @strSQL = ''
set @strSQL = @strSQL + ' Insert into @tblAA'
set @strSQL = @strSQL + ' Select NO from TBLBango'

EXEC sp_executesql @strSQL ,N'@tblAA table(No int) OUTPUT', @tblAA OUTPUT

Select * from @tblAA

これを実行すろと「変数 '@tblAA' を宣言する必要があります。」というエラーがでます。
解決方法を分かる方教えてください。

投稿日時 - 2005-01-11 15:06:29

QNo.1162717

暇なときに回答ください

質問者が選んだベストアンサー

質問の回答になってないかもしれませんが、こんな方法もあります。

select * into tbl2 from tbl1 where ・・・

こうすればselectの結果をもとにtbl2が作成されます。ただし、この処理を実行するときにtbl2が存在するとエラーになるのでそれを判断して、ドロップする必要があります。

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[tbl2]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
drop table [dbo].[tbl2]

投稿日時 - 2005-01-22 21:58:21

このQ&Aは役に立ちましたか?

3人が「このQ&Aが役に立った」と投票しています

-広告-
-広告-

回答(2)

ANo.1

私もやってみましたが、
ストアドの戻りにテーブル型は無理なようです。
ヘルプには明示的に書かれていなかったので、出来るかなとも思ったのですが・・・

なので一時テーブル等を使用したほうがよさそうな感じです。

投稿日時 - 2005-01-14 17:57:44

お礼

ご回答有難うございます。
やはりだめでしょうか。自分も色々試してみたんですが、だめでした。ということで、カーソルを使ってやることにしました。カーソルは使えました。速度は若干落ちてもBatch処理なので、いいかなあと思います。
有難うございました。
今後とも宜しくお願いします。

投稿日時 - 2005-01-14 18:50:47

-広告-
-広告-

あなたにオススメの質問

-広告-
-広告-