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

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

新規登録して質問してみよう
ただいま回答率
85.35%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Oracle

Oracleは、米オラクルが取り扱うリレーショナルデータベース管理システムです。メインフレームからPCまで、多様なプラットフォームに対応しています。

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

Windows Forms

Windows Forms(WinForms)はMicrosoft .NET フレームワークに含まれる視覚的なアプリケーションのプログラミングインターフェイス(API)です。WinFormsは管理されているコードの既存のWindowsのAPIをラップすることで元のMicrosoft Windowsのインターフェイスのエレメントにアクセスすることができます。

VB.NET

Microsoft Visual Basic .NETのことで、Microsoft Visual Basic(VB6)の後継。 .NET環境向けのプログラムを開発することができます。 現在のVB.NETでは、.NET Frameworkを利用して開発を行うことが可能です。

Q&A

解決済

2回答

4970閲覧

SQL実行時、プログレスバーなどを使用して進捗を知りたい。

kariaka2020

総合スコア37

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Oracle

Oracleは、米オラクルが取り扱うリレーショナルデータベース管理システムです。メインフレームからPCまで、多様なプラットフォームに対応しています。

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

Windows Forms

Windows Forms(WinForms)はMicrosoft .NET フレームワークに含まれる視覚的なアプリケーションのプログラミングインターフェイス(API)です。WinFormsは管理されているコードの既存のWindowsのAPIをラップすることで元のMicrosoft Windowsのインターフェイスのエレメントにアクセスすることができます。

VB.NET

Microsoft Visual Basic .NETのことで、Microsoft Visual Basic(VB6)の後継。 .NET環境向けのプログラムを開発することができます。 現在のVB.NETでは、.NET Frameworkを利用して開発を行うことが可能です。

0グッド

0クリップ

投稿2020/10/06 03:40

編集2020/10/07 13:47

csvファイルを読み込んで、oracleのパッケージを利用してDBに登録するシステムを作っています。

このファイルのサイズが大きい場合、待ち時間が長くなるので、どの程度処理できたか分かれば便利だなと感じました。

調べてみたところVB上で、都度 値をプログレスバーに渡していく方法は見つかったのですが、今私が作成しているものは、パッケージを利用しているため 処理前0%→パッケージによる登録→処理後100% といった不自然な形になってしまいます。

パッケージから複数回に分けてVB側に値を渡すなど、少しずつ進捗率を上げていくという方法はありますでしょうか。

また、それ以外でも良い方法があれば教えていただけませんでしょうか。

よろしくお願いいたします。

------------追記------------

かなり単純なものなのですが、下記URLのブログを参考にしました。
https://hironimo.com/prog/vbnet/progressbar/#_Value

パッケージの概要としては、指定したテーブルから1行ずつカーソルで取りだし、それらに処理を施した後に他のテーブルにinsertするという流れです。

テーブルの行数は分かっているので、プロシージャの実行中に 何行目を処理しているのかを示す値 を複数回取り出すことが出来れば、進捗を可視化できると思ったのですが、何か良い方法はありませんでしょうか。

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

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

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

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

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

Orlofsky

2020/10/06 09:44

> 調べてみたところVB上で、都度 値をプログレスバーに渡していく方法は見つかったのですが、 質問にそのURLを追記したり、パッケージの概要くらい載せては?
kariaka2020

2020/10/06 11:25

Orlofsky様 回答ありがとうございます。 かなり単純なものなのですが、下記URLのブログを参考にしました。 https://hironimo.com/prog/vbnet/progressbar/#_Value パッケージの概要としては、指定したテーブルから1行ずつカーソルで取りだし、それらに処理を施した後に他のテーブルにinsertするという流れです。 テーブルの行数は分かっているので、プロシージャの実行中に 何行目を処理しているのかを示す値 を複数回取り出すことが出来れば、進捗を可視化できると思ったのですが、何か良い方法はありませんでしょうか。 よろしくお願いいたします。
退会済みユーザー

退会済みユーザー

2020/10/07 00:34

上記は追加情報として質問欄を編集して追記してください。コメント欄は初期画面では開いておらず読まない人がいますので (実は自分がそうでした)。
kariaka2020

2020/10/07 13:45

SurferOnWww様 ありがとうございます、確かにこれだと分かりづらいですね… 今回は、これで締め切ろうと思うので次回以降気をつけようと思います! アドバイスありがとうございました。
guest

回答2

0

また、それ以外でも良い方法があれば教えていただけませんでしょうか。

そのようにステップが具体的に判明しないもののために、プログレスバーには「マーキー」というスタイルが用意されています。

ProgressBarをマーキースタイル(ブロックが移動するアニメーション)で表示する

投稿2020/10/06 04:01

gentaro

総合スコア8947

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

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

kariaka2020

2020/10/06 11:29

gentaro様 回答ありがとうございます。 マーキースタイルというものがあるのですね。 確かに動いているという事はわかるので、今回の希望が実現できなかった場合、こちらを利用しようと思います。 教えていただき、ありがとうございました。
guest

0

ベストアンサー

一応Oracleniにはセッションプランという
SQLの実行状況を把握する仕組みがあります

実行中のSQLのステータスを確認する

これを利用すれば現状は把握できるのですが
把握するためにSQLを何度も発行しないといけないのでその分時間も負担もかかります。

あとは更新系ならSQLの実行範囲を分けBeginTrans、CommitTransを使用する
手段もありますが進捗だけの為に分けるのはあまりオススメできませんね。

あと「正確でなくても良い」のであれば
SQLを実行したときの実行時間を事前に測定(キャッシュの有無でも変わりますが)
その時間を元に模擬的にプログレスバーを変更するとかでしょうか?

投稿2020/10/06 03:53

kuma_kuma_

総合スコア2506

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

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

kariaka2020

2020/10/06 11:40

kuma_kuma_様 回答ありがとうございます。 V$SESSIONというものは、初めて聞いた名前でしたのでもう少し調べてみようと思います。 実行範囲をいくつか分けるというのも確かに考えはしたのですが、ソースが分かりづらくなってしまいそうだったので断念したところでした…。 実行時間をもとにした方法は、今回比較的一定の速度で同じ処理を繰り返していくので利用できそうです…! 何度か実行して、良さそうならこちらを採用してみようと思います。 この度は回答ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問