ホーム   フォーラム   FAQ
 
メインメニュー
ログイン
ユーザー名:

パスワード:


パスワード紛失

埋め込みSQLのUPDATE及びDELETE文の処理件数の取得

  • このフォーラムに新しいトピックを立てることはできません
  • このフォーラムではゲスト投稿が禁止されています
前の投稿 - 次の投稿 | 親投稿 - 子投稿なし | 投稿日時 2013-7-3 16:18
mysticage  一人前   投稿数: 77
Kuroganeさん、返答ありがとうございます。

埋め込みSQLに複数のSQL文など記載できることは知りませんでした。ストアドプロシージャ的な記載ができるということですね。参考になりました。

ありがとうございました。
投票数:0 平均点:0.00
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 | 投稿日時 2013-7-3 14:31
Kurogane  常連   投稿数: 50
更新対象テーブルをA(column_2を絞り込んでcolumn_1を更新)
件数保持用テーブルをB(count_columnに件数を保持)として、

declare @count int

update A
set column_1 = 10
where column_2 = 1

select @count = @@rowcount

insert into B
(count_column)
values(@count)


変数なしに直接@@rowcountをinsert文に利用できるかも
知れませんが、念のために変数を仲介してます。

@@rowcountは直前のステートメントの件数を取得できる
システム変数ですが、MAGIC上のタスクを分けてしまうと
MAGIC自身がいたるところでSQL文を発行しているので取得
はできないかと思われます。

なので更新→件数取得は同じ埋め込みSQL内で実現させて
下さい。
投票数:1 平均点:10.00
前の投稿 - 次の投稿 | 親投稿 - 子投稿なし | 投稿日時 2013-7-3 9:33
mysticage  一人前   投稿数: 77
Puさん、返信ありがとうございます。

UPDATEなど、出力パラメータを設定しましたらエラーになってしまいました。

また、何か方法がありましたらお願いします。
投票数:0 平均点:0.00
前の投稿 - 次の投稿 | 親投稿 - 子投稿なし | 投稿日時 2013-7-3 9:32
mysticage  一人前   投稿数: 77
Kuroganeさん、調査及び返信ありがとうございます。

V10でも、UPDATEなど、出力パラメータを設定しましたらエラーになってしまいました。

@@ROWCOUNTですが、MAGIC内で、UPDATEやDELETEの処理をしたタスクが終了した直後に別タスクで、
SELECT @@ROWCOUNT
とし、出力パラメータに数値の変数を設定しましたが、
実際処理件数に関係なく、全て[1]で戻ってきます。
何かやりかたが間違っているのでしょうか?

また、件数保持用のテーブルを作成して、@@ROWCOUNTを保持しているということですが、どのタイミングで、どこで、保持しているのでしょうか?差し支えがなければ教えて頂けないでしょうか。
投票数:0 平均点:0.00
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 | 投稿日時 2013-7-2 10:20
Kurogane  常連   投稿数: 50
V9で試したところ、select文以外がある状況で出力パラメータを
設定するとこけちゃいますね。

うちでは、件数保持用のテーブルを作成して、@@rowcountを保持
させています。
投票数:1 平均点:10.00
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 | 投稿日時 2013-7-2 9:25
pu_mahalo  長老 居住地: 大阪  投稿数: 775
こんにちは Puです

通常の言語系でしたら SQLを実行した後
roucountで処理した件数が取得できるのですが

Magicでは試してみてません(試せばわかるのですが^^;)
delete from Hogehoge
where 列1 = xxx
sql@@rowcount

でわ〜でわ〜

投票数:0 平均点:0.00
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 .2 .3 | 投稿日時 2013-7-1 15:59
mysticage  一人前   投稿数: 77
埋め込みSQLにてUPDATEやDELETE処理をした場合に、
その処理した件数を画面などに表示するに当り、その件数を
取得したいと思っています。

今は、処理するSQLのWHERE句をそのまま別タスクのSELECT COUNT(*) として、最初に件数を取得した後に、UPDATEやDELETEの処理をしています。
DELETE、UPDATE用のタスクとSELECT COUNT(*)用のタスクと2つ作成しますが、同じ事を2回書くのはプログラムのバグのもとにもなりかねませんので、何とかDELETE、UPDATE用のタスクの中で処理した件数が取得できないかと思っています。

DELETE、UPDATE処理した時の処理件数はどのように取得できますか?よろしくお願いします。
投票数:0 平均点:0.00

  条件検索へ


Copyright (C) Magic Software Japan K.K. All Rights Reserved.
個人情報保護方針 会員規約