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