質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Oracle Database 12c

Oracle Database 12cは、RDBMS製品です。世界初の商用RDBMSであるOracle Databaseのバージョンで、2013年にリリース。クラウド対応を考慮して設計されました。主な機能には、マルチテナント対応やインメモリデータベースの実装などがあります。

PL/SQL

PL/SQL (Procedural Language/Structured Query Language) はOracle CorporationによるSQL(非手続き型言語)を手続き型言語に拡張させるために開発されたプログラミング言語です。

ASP

ASP(Active Server Pages) あるいはClassic ASP (ASP Classic)は、マイクロソフト社開発した動的なウェブページ製作に利用可能なサーバー側のスプリクトエンジンです。

Q&A

0回答

538閲覧

クラシックASP+ADOでのストアドプロシージャ戻り値取得

sieg

総合スコア0

Oracle Database 12c

Oracle Database 12cは、RDBMS製品です。世界初の商用RDBMSであるOracle Databaseのバージョンで、2013年にリリース。クラウド対応を考慮して設計されました。主な機能には、マルチテナント対応やインメモリデータベースの実装などがあります。

PL/SQL

PL/SQL (Procedural Language/Structured Query Language) はOracle CorporationによるSQL(非手続き型言語)を手続き型言語に拡張させるために開発されたプログラミング言語です。

ASP

ASP(Active Server Pages) あるいはClassic ASP (ASP Classic)は、マイクロソフト社開発した動的なウェブページ製作に利用可能なサーバー側のスプリクトエンジンです。

0グッド

0クリップ

投稿2022/10/24 05:35

編集2022/10/25 04:20

■質問内容
現在クラシックASP+ADOを用いてOracle(.ver 12c)のストアドプロシージャの実行を行うよう新規構築しています。

以下のコードにてストアドプロシージャの実行自体は出来ることをストアドプロシージャの処理内でINSERTされるテーブル等で確認しているのですが、ストアドプロシージャの戻り値を取得できておりません。(以下ソース内コメント★の箇所)
ストアドプロシージャの戻り値をASPにて取得したいのですが、必要な設定、コード等ありますでしょうか?

尚、ストアドプロシージャを直接実行すると、戻り値を取得できることは確認済みです。

■ソース(抜粋)
・ASP(.asp)

Dim objCmd
Set objCmd = Server.CreateObject(“ADODB.Command”)
objCmd.CommandText = “Begin ? :=TEST_SP.MAIN(?, ?, ?, ?); end;”
objCmd.CommandType = 1

objCmd.Parameters.Append objCmd.CreateParameter(“RetVal”, 131, 4, 10, 1)
objCmd.Parameters.Append objCmd.CreateParameter(“DtCnt”, 131, 2, 10, 2)
objCmd.Parameters.Append objCmd.CreateParameter(“ErrFlg”, 131, 2, 10, 3)
objCmd.Parameters.Append objCmd.CreateParameter(“ErrCd”, 131, 2, 10, 4)
objCmd.Parameters.Append objCmd.CreateParameter(“ErrMsg”, 200, 2, 600, “ ”)

objCmd.Execute

‘★以下のResponse.Writeが全て値が表示されない。ここでストアドの戻り値を取得させたい
Response.Write “RetVal = ” & objCmd.Parameters(“RetVal”).Value & “<br>
Response.Write “DtCnt = ” & objCmd.Parameters(“DtCnt”).Value & “<br>
Response.Write “ErrFlg = ” & objCmd.Parameters(“ErrFlg”).Value & “<br>
Response.Write “ErrCd = ” & objCmd.Parameters(“ErrCd”).Value & “<br>
Response.Write “ErrMsg = ” & objCmd.Parameters(“ErrMsg”).Value & “<br>

・ストアドプロシージャ
CREATE OR REPLACE PACKAGE TEST_SP IS
FUNCTION MAIN (
p_DTOUTCNT OUT NUMBER
,p_ERRFLG OUT NUMBER
,p_ERRCD OUT NUMBER
,p_ERRSTR OUT VARCHAR2
) RETURN NUMBER;

END;

・ストアドプロシージャ(BODY)
CREATE OR REPLACE PACKAGE BODY TEST_SP
IS
FUNCTION MAIN(
p_DTOUTCNT OUT NUMBER
,p_ERRFLG OUT NUMBER
,p_ERRCD OUT NUMBER
,p_ERRSTR OUT VARCHAR2
) RETURN NUMBER IS

BEGIN p_DTOUTCNT := 0; p_ERRFLG := 0; p_ERRCD := 0; SELECT COUNT(1) INTO p_DTOUTCNT FROM LOG_TBL; IF p_DTOUTCNT = 0 THEN p_ERRFLG := 1; p_ERRCD := 9; p_ERRSTR := 'NOT FOUND'; ELSE p_ERRFLG := 0; p_ERRCD := 0; p_ERRSTR := NULL; END IF; RETURN 0; EXCEPTION WHEN OTHERS THEN p_ERRCD := SQLCODE; p_ERRSTR := 'ERR-MAIN'; ROLLBACK; RETURN 1; END MAIN;

END TEST_SP;

■参考サイト
http://asp.style-mods.net/ref_connection/execute.htm

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2022/10/24 06:37 編集

クラシック ASP なのか ASP.NET なのか、どっちですか? 何を何で作っているかぐらいは書けませんか? (例: Visual Studio 2022 で ASP.NET Web Forms アプリをターゲットフレームワーク .NET Framework 4.8 で作っています)
Orlofsky

2022/10/24 08:16

PACKAGE TEST_SP だけでなく、 PACKAGE BODY TEST_SP も提示できないと誰も回答できません。 [PL/SQL]タグを追加してください。
退会済みユーザー

退会済みユーザー

2022/10/24 13:50 編集

ASP.NET, ADO.NET は関係ないのでタグを外してください。ASP というタグがあるはずです。
Orlofsky

2022/10/25 05:15

ASPの部分も含めて、コードは追加した部分だけではなく、1つのファイル分をひとつのMarkdownの[コード]で提示してください。 あと、意味のあるコードにしてね。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問