Date: Tue, 1 Aug 2000 10:34:37 +0900
From: "Madoka Takai" <who@sub.example.jp>
FOX-SSさん こんにちは 結構暇そうに見える高井です。
>どうもうまく行きません。根本的に何か間違っているかもしれません。
>以下はそれを簡略化した物です。
うーん 簡略化しすぎで...
begin や @やインクリメントまで 簡略化しないで コンパイル通らない
以下に修正版を
Create procedure usp_GetItemNum
@aRecID int, @aUserID char(8), @aItemNum int output
as
declare @wIdx int
declare @wWork int
declare @wSql nvarchar(256)
DECLARE @ParmDefinition NVARCHAR(500)
SET @ParmDefinition = N'@wWork int'
set @wIdx = 1 --reset value
set @aItemNum = 0 --reset value
while @wIdx <= 100 --部品1〜100という列が存在するテーブル
begin
-- set @wSql = N'select 部品' + Ltrim(Str(wIdx)) +
set @wSql = N'select @wWork = 部品' + Ltrim(Str(wIdx)) +
N' from 部品使用TBL' +
N' where 登録ID = ' + cast(@aRecID as nvarchar(3)) +
N' and ' + N'利用者ID = ' + N'''' + @aUserID + N''''
-- exec sp_executesql @wSql
exec sp_executesql @wSql, @ParmDefinition, @wWork = 0
if @wWork = 123 --アイテム123を使っている部品番号を得る
begin
set @aItemNum = @wIdx
break
end
SET @wIdx = @wIdx + 1
end
return
これでコンパイルは通るはずだけど 上記のコードは引数渡しの場合です。
sp_executesql は結果セットしか返さないのでは?
コメント -- はずせば 結果は返ってきますけど...
一時テーブル使わないとだめでしょうか?
後で違う方法探して見ます。とりあえず...
P.S
SET @ParmDefinition = N'@wWork int output'
にしてもコンパイルは通るけど戻りはNULLでした。
SQL Server UsersGroupできましたね。何してくれるんだろう?
--------------------------------------------------
株式会社 TRUE 高井 円
URL: www.trueheart.co.jp (ほとんど工事中)
Mail: who@example.co.jp
--------------------------------------------------
[MSDE/SQLServerに関して、今、どんなことにお困りですか?] |
よろしければお困りの内容を、電子メールで教えて下さい。 |
質問を電子メールで作成する
|
[ウィンドを閉じる][MSDE/SQLServer FAQ ][MSDE / MSDE2000 技術サポート情報一覧]
|