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

 
ストアドが Recordset を作成するときの VBの Return 値について

Date: Wed, 02 May 2001 17:05:11 +0900
From: who@sub.example.jp



    こちらはいつも拝見させていただいております。
    VBマガジン6月号もがりがり今読んでいます。
    丁度旬な記事なので大変参考になっています。

    OS情報    :Win2000 SP1
    コンテナ情報:VB6 SP5
    SQLサーバー :7.0 SP3

    という開発環境で行っています。
    
    表題の件ですが次のような内容です。

○ストアドプロシージャー
    Alter PROCEDURE Str_T_ReserveRead
    AS
            DECLARE @WERROR 	INT
            SELECT  @WERROR     = 0

            SELECT  *
            FROM    T_RESERVE

            SELECT  @WERROR = @@ERROR

            SELECT  @WERROR     = 999   ←わざと値を返す為に。
    RETURN @WERROR
    
○VB側
    接続処理
        ・
        ・
    adcmd.CommandText = "str_xxxxx"     ''---[ ストアドプロシージャー名
    adcmd.CommandType = adCmdStoredProc 
    adcmd.Parameters.Append adcmd.CreateParameter("Return", adInteger, _
                                                adParamReturnValue)

    Set adrst = adcmd.Execute                       
    
    ざっとですがこんな感じです。
    
    1)ストアドプロシージャー側の処理が Select の場合

            mlngParameterError = adcmd("Return")

        値が入ってきません。値は『0』です。

        何かの雑誌でストアドプロシージャー側がRecordset を返す場合は
        Return値は、取得したRecordset をClose しない限り取得できないという
        内容を見てCLOSEもやってみたのですが、正常に受け取ることができません。
        
    2)仮にストアドプロシージャー側の処理が Insert ,Update, DELETE の場合

○ストアドプロシージャー
    Alter PROCEDURE Str_T_ReserveRead
    AS
            DECLARE @WERROR 	INT
            SELECT  @WERROR     = 0

            INSERT  T_RESERVEWK
            SELECT  *
            FROM    T_RESERVE

            SELECT  @WERROR = @@ERROR

            SELECT  @WERROR     = 999   ←わざと値を返す為に。
    RETURN @WERROR

            mlngParameterError = adcmd("Return")

        Select文をInsert 文に変更した場合、上記1行で正常に受け取れます。

        試しに、

○ストアドプロシージャー
    Alter PROCEDURE Str_T_ReserveRead
    AS
            DECLARE @WERROR 	INT
            SELECT  @WERROR     = 0
/*
            SELECT  *
            FROM    T_RESERVE
*/
            SELECT  @WERROR = @@ERROR

            SELECT  @WERROR     = 999   
    RETURN @WERROR

        とやってみたところ、値『999』を受け取る事ができます。
        
        ストアドプロシージャー側でRecordset を作成する場合、
        Return値は返ってこないものなのでしょうか。
        
        御指導、よろしくお願いいたします。m(._.)m

who@sub.example.jp
━┛━┛━┛━┛



[MSDE/SQLServerに関して、今、どんなことにお困りですか?]
よろしければお困りの内容を、電子メールで教えて下さい。
質問を電子メールで作成する


[ウィンドを閉じる]

[MSDE/SQLServer FAQ ]

[MSDE / MSDE2000 技術サポート情報一覧]

MSDE TOP ページに移動する

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