Date: Mon, 31 Jul 2000 22:00:51 +0900
From: FOX-SS <who@sub.example.jp>
標記のことで質問いたします。
ストアドプロシージャで「列」の値をチェックしながら処理を行う物を作ろう
としております。ループの中で SELECT 文を行いそこで返ってきた値を調べた
いのですが、どうもうまく行きません。根本的に何か間違っているかもしれま
せん。以下はそれを簡略化した物です。
------------------------------------------------------------
Create procedure usp_GetItemNum
@aRecID int, @aUserID char(8), @aItemNum int output
as
declare @wIdx int
declare @wWork int
declare @wSql nvarchar(256)
set @wIdx = 1 --reset value
set @aItemNum = 0 --reset value
while @wIdx <= 100 --部品1〜100という列が存在するテーブル
set @wSql = 'select @wWork = 部品' + Ltrim(Str(wIdx)) +
' from 部品使用TBL' +
' where 登録ID = ' + cast(@aRecID as nvarchar(3)) +
' and ' + '利用者ID = ' + "'" + @aUserID + "'"
exec sp_executesql @wSql, @wWork
if @wWork = 123 --アイテム123を使っている部品番号を得る
begin
set @aItemNum = @wIdx
break
end
end
return
------------------------------------------------------------
いろいろ試行錯誤してみたのですが、exec sp_....のところで
サーバー : メッセージ 170、レベル 15、状態 1、行 1
行 1: ')' の近くに不正な構文があります。
サーバー : メッセージ 137、レベル 15、状態 1、行 1
変数 '@wWork' を宣言する必要があります。
というエラーが出てしまい躓いております。SQL 文自体は、
select @wWork = 部品1 from 部品使用 where 登録ID = 1 and
利用者ID = '0001'
の様に一見まともな感じで作られておりました。
さて、あとはどこが勘違いしているのでしょうか?
よろしければ、ご指導のほどお願いいたします。
FOX-SS
[MSDE/SQLServerに関して、今、どんなことにお困りですか?] |
よろしければお困りの内容を、電子メールで教えて下さい。 |
質問を電子メールで作成する
|
[ウィンドを閉じる][MSDE/SQLServer FAQ ][MSDE / MSDE2000 技術サポート情報一覧]
|