SQL Serverのストアド中でUPDATEを実行すると
OUTパラメータの値が取得できなくなってしまいます。
何か制約などあるのでしょうか?
わかる方よろしくお願いします。
1.UPDATE文をコメントアウトすると取得できます。
2.UPDATEは正常に実行されています。
/**参考ソース**/
/**
下記プログラムは、引数で取得した文字列に
連番テーブルの値をインクリメントした値と
結合しOUTパラメータに、連番テーブルには、
インクリメント結果をセットしています。
**/
CREATE procedure xml_get_document_seq
@inDate varchar(14),
@outSeq varchar(18) output
as
begin
declare@Workvarchar(4)
declare@Seqvarchar(18)
declare@Numberdecimal(5)
declare@SeqDocvarchar(18)
if not exists(SELECT SEQ
FROM XML_DOCUMENT_SEQ) begin
INSERT INTO XML_DOCUMENT_SEQ(SEQ)
VALUES(0)
end
set @Seq= ISNULL(@inDate,'')
SELECT @Number = SEQ
FROM XML_DOCUMENT_SEQ
set @Number = @Number + 1
if @Number > 9999 begin
set @Number = 1
end
set @Work= ISNULL(convert(varchar,@Number),'')
set @SeqDoc= @Seq
+ replicate('0', 4 - datalength(@Work))
+ @Work
UPDATE XML_DOCUMENT_SEQ
SET SEQ = @Number
Set @outSeq = @SeqDoc
return @Number
end
GO
No.1ベストアンサー
- 回答日時:
提示いただいているソースで現象が発生するのでしょうか?
私も過去に同様の現象に見舞われた記憶があります。
そのときはUPDATEに不正があるのではなくて、
それまでの処理で不正があったことが原因だったような・・
プロシージャの実行はどうやってやられているのでしょうか?
クエリアナライザでプロシージャを呼び出してみたら
なにかしらのエラーが結果として表示されるかも・・
この回答への補足
実行は、VB.NETでADODB.Command
で行っています。
記載したソースは、本来の機能のままですが
現象確認のため
UOTパラメータに文字列を
セットした記述と
UPDATE文だけでも確認できました。
CREATE procedure xml_get_document_seq
@inDate varchar(14),
@outSeq varchar(18) output
as
begin
declare @Number decimal(5)
set @Number = @Number + 1
UPDATE XML_DOCUMENT_SEQ
SET SEQ = @Number
Set @outSeq = '200311202336000001'
return 0
end
GO
何らかのエラートラップを入れてみたほうが
よいのでしょうか?
少し判明したことがありました
ストアド自体はうまく実行されているようです。
クエリアナライザ上では正常にいきます。
ただ、VB.NETからだとうまくいきません。
ConnectionStringは、
Provider=SQLOLEDB.1
Data Source=サーバー名(サービス名)
Initial Catalog=データベース名
User Id=
Password=
こんな感じです。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
- ・ゆるやかでぃべーと タイムマシンを破壊すべきか。
- ・歩いた自慢大会
- ・許せない心理テスト
- ・字面がカッコいい英単語
- ・これ何て呼びますか Part2
- ・人生で一番思い出に残ってる靴
- ・ゆるやかでぃべーと すべての高校生はアルバイトをするべきだ。
- ・初めて自分の家と他人の家が違う、と意識した時
- ・単二電池
- ・チョコミントアイス
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Access VBAで行ラベルが定義さ...
-
VBA プロシージャの名前の取得
-
【Excel VBA】 WorksheetやRa...
-
Accessのマクロでモジュールを...
-
callで順に実行されるプロシー...
-
エクセルVBAでUserFormを起動し...
-
VBA 「文字が入っていたら、...
-
ACCESS2007インポート時の空白...
-
ブックオープン時にテキストボ...
-
Excel VBAで「プログラム実行」...
-
DBMS_OUTPUT.PUT_LINEを実行し...
-
連番欠番アルゴリズム
-
Oracle : BLOB型フィールドへの...
-
VB2008でe.valueとはどういう意...
-
或るプロシージャの呼び出し元判定
-
DB2でのストアドプロシージャの...
-
エクセルVBAでOn Error Resume ...
-
ストアドプロシジャからストア...
-
Statement ignored というエラー
-
PL/SQLでSPOOLさせたいのですが...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Accessのマクロでモジュールを...
-
Access VBAで行ラベルが定義さ...
-
エクセルVBAでUserFormを起動し...
-
VBA プロシージャの名前の取得
-
callで順に実行されるプロシー...
-
【Excel VBA】 WorksheetやRa...
-
或るプロシージャの呼び出し元判定
-
OutlookVBAで作成したマクロに...
-
Excel VBAで「プログラム実行」...
-
DBMS_OUTPUT.PUT_LINEを実行し...
-
excel/vba/public変数
-
ACCESS2007インポート時の空白...
-
Accessでグローバル変数を宣言...
-
ACCESS マクロをモジュールに変...
-
エクセルVBAが対応できるプログ...
-
Access2016 VBA ボタンのイベン...
-
アクセス 意図せずサブプロシー...
-
Oracle : BLOB型フィールドへの...
-
DB2でのストアドプロシージャの...
-
Accessのプロシージャ名が勝手...
おすすめ情報