アプリ版:「スタンプのみでお礼する」機能のリリースについて

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' を宣言する必要があります。」というエラーがでます。
解決方法を分かる方教えてください。

A 回答 (2件)

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



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]
    • good
    • 0

私もやってみましたが、


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

なので一時テーブル等を使用したほうがよさそうな感じです。
    • good
    • 0
この回答へのお礼

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

お礼日時:2005/01/14 18:50

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

関連するカテゴリからQ&Aを探す