MSDE FunClub
Microsoft Data Engine FunClub
MSDE技術者向けメーリングリスト過去ログ[178]番
 
[TOP]>[MSDE技術者向けメーリングリスト過去ログ(178番)]>[ウィンドを閉じる]
 
SQLServer2005時代でも
開発の基本は T-SQL
上巻で T-SQL の基礎作り
 
SQLServer2005時代でも
運用の基本はバックアップ
下巻でバックアップ手法を学びましょう
PASSJ人気コンテンツで学んだ後は下巻でさらなる学習を!
 
ウィンドを閉じる
MSDE/SQLServer FAQ
MSDE / MSDE2000 
技術情報サポート
初心者向け
メーリングリスト
過去ログの表示
技術者向け
メーリングリスト
過去ログの表示
メーリングリスト
活動状況の
表示
MSDE TOP メニュー
MSDEトップメニューに移動します
 

 
StoredProc での値取得・判定

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 技術サポート情報一覧]

MSDE TOP ページに移動する

 
 
 
 
 
 
 
MSDE FunClubに関するご意見・ご要望等ございましたら、
msdefun@horikawa.ne.jp までご連絡下さい。
MSDEを始めとする各種データベースシステムの開発、コンサルタントに関するご要望等は、
msdedev@horikawa.ne.jp までご連絡下さい。