SQLServer 2005 ストアドプロシージャの戻り値を取得する。
- このフォーラムに新しいトピックを立てることはできません
- このフォーラムではゲスト投稿が禁止されています
KoKaZu
投稿数: 2
![新米 新米](../../uploads/rank3e632f95e81ca.gif)
Magic uniPasS V1Plus
SQL Server2005
でトアドプロシージャを実行するプログラムを作成中です。
ストアドの実行結果を取得したいのですがうまくいきません。
ヘルプ SQL データベース, ストアドプロシージャの実行
には以下のように記載があります。
[SQLコマンド]ダイアログで
EXEC ? = proc_name
と記述し
[戻り値]欄に変数項目を指定する
とあります。
それに従い以下のように記述しました。
EXEC ? = sp_TH3060_集計 :1
戻り値:には論理型の変数を指定。
(数値型も試しましたが同じでした)
実行すると以下のようなエラーメッセージで実行できません。
>> イベント処理中 [ エラー: SQLコマンドが正しくない \\DB エラーコード 0 ] コントロール名 : [ 無効 ]
以下のようにして、戻り値の設定をしない場合ストアドプロシージャは正常に実行され更新がかかっています。
EXEC sp_TH3060_集計 :1
戻り値:※指定しない。
:1には文字列で'31','2010/07/31'というよな引数をセットしています。
呼出すストアドプロシージャは以下です。
(実験用に単純化して一部のみを残して実行しています)
USE [ERA]
GO
/****** Object: StoredProcedure [dbo].[sp_TH3060_集計] ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[sp_TH3060_集計]
(
@締日 int,
@請求日 varchar(10) ) AS
BEGIN TRY
BEGIN TRANSACTION
/*集計日の更新*/
UPDATE MA_管理
SET 締集計日=@締日,請求集計日=@請求日
WHERE 管理CD=1
COMMIT TRANSACTION
END TRY
BEGIN CATCH
RETURN
ROLLBACK TRANSACTION
END CATCH
マジックの記述がまずいのか、
ストアドプロシージャ側に何か記述しなければいけないのか
わかりません。。。
マジックをはじめて数ヶ月で、
他に設定箇所があるのかもよくわからず投稿いたしました。
ここの情報があれば原因がわかる というようであれば調べますので、わかる方いらっしゃったら教えていただけないでしょうか。
よろしくお願いいたします。
SQL Server2005
でトアドプロシージャを実行するプログラムを作成中です。
ストアドの実行結果を取得したいのですがうまくいきません。
ヘルプ SQL データベース, ストアドプロシージャの実行
には以下のように記載があります。
[SQLコマンド]ダイアログで
EXEC ? = proc_name
と記述し
[戻り値]欄に変数項目を指定する
とあります。
それに従い以下のように記述しました。
EXEC ? = sp_TH3060_集計 :1
戻り値:には論理型の変数を指定。
(数値型も試しましたが同じでした)
実行すると以下のようなエラーメッセージで実行できません。
>> イベント処理中 [ エラー: SQLコマンドが正しくない \\DB エラーコード 0 ] コントロール名 : [ 無効 ]
以下のようにして、戻り値の設定をしない場合ストアドプロシージャは正常に実行され更新がかかっています。
EXEC sp_TH3060_集計 :1
戻り値:※指定しない。
:1には文字列で'31','2010/07/31'というよな引数をセットしています。
呼出すストアドプロシージャは以下です。
(実験用に単純化して一部のみを残して実行しています)
USE [ERA]
GO
/****** Object: StoredProcedure [dbo].[sp_TH3060_集計] ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[sp_TH3060_集計]
(
@締日 int,
@請求日 varchar(10) ) AS
BEGIN TRY
BEGIN TRANSACTION
/*集計日の更新*/
UPDATE MA_管理
SET 締集計日=@締日,請求集計日=@請求日
WHERE 管理CD=1
COMMIT TRANSACTION
END TRY
BEGIN CATCH
RETURN
ROLLBACK TRANSACTION
END CATCH
マジックの記述がまずいのか、
ストアドプロシージャ側に何か記述しなければいけないのか
わかりません。。。
マジックをはじめて数ヶ月で、
他に設定箇所があるのかもよくわからず投稿いたしました。
ここの情報があれば原因がわかる というようであれば調べますので、わかる方いらっしゃったら教えていただけないでしょうか。
よろしくお願いいたします。
投票数:0
平均点:0.00
Jiro123
投稿数: 271
![長老 長老](../../uploads/rank3dbf8eb1a72e7.gif)
ヘルプのデータビューエディタ - 埋め込みSQLの
『埋め込みSQLの使用における制約事項』に、次の記載がありました。
MS-SQL Serverの場合、戻り値はSelectステートメントの結果でのみ設定可能です。出力パラメータでは指定できません。
SQLServerでは、出力パラメータを利用できないようです。
SQLServerであれば、selectステートメントを使って結果を出力するようなストアドプロシージャを記述すれば、結果を取得できると思います。
私は、あまりストアドプロシージャが得意でないので、ストアドプロシージャ自体について聞かれても、お答えできないと思いますので、ご容赦ください。
『埋め込みSQLの使用における制約事項』に、次の記載がありました。
MS-SQL Serverの場合、戻り値はSelectステートメントの結果でのみ設定可能です。出力パラメータでは指定できません。
SQLServerでは、出力パラメータを利用できないようです。
SQLServerであれば、selectステートメントを使って結果を出力するようなストアドプロシージャを記述すれば、結果を取得できると思います。
私は、あまりストアドプロシージャが得意でないので、ストアドプロシージャ自体について聞かれても、お答えできないと思いますので、ご容赦ください。
投票数:1
平均点:10.00
KoKaZu
投稿数: 2
![新米 新米](../../uploads/rank3e632f95e81ca.gif)
Jiro123 さん
ありがとうございます。
SQLServerだと取得できないんですね。。。
他の方法で正常終了/異常終了を判断する方法を考えてみます。
ストアドプロシージャ実行前にマジック側で管理テーブルにフラグ
を立て、ストアド正常終了後にフラグを戻すなど、
なんらかの方法でやってみます。
ありがとうございました。
ちなみに
ストアドプロシージャでSelect結果を取得することはできました。
ありがとうございます。
SQLServerだと取得できないんですね。。。
他の方法で正常終了/異常終了を判断する方法を考えてみます。
ストアドプロシージャ実行前にマジック側で管理テーブルにフラグ
を立て、ストアド正常終了後にフラグを戻すなど、
なんらかの方法でやってみます。
ありがとうございました。
ちなみに
ストアドプロシージャでSelect結果を取得することはできました。
投票数:0
平均点:0.00