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

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

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

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

PL/SQL

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

Q&A

解決済

2回答

2246閲覧

PLSQLにて桁ズレを検知したい

yamaguti

総合スコア185

Oracle

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

PL/SQL

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

0グッド

0クリップ

投稿2018/01/07 09:23

お世話になっております。

CSVからデータを取り込んだ際にデータが桁ズレを起こしていることがあります
ので、検知をしたく以下のようなPL_SQLを書きました。

PL_SQL

1CREATE OR REPLACE PROCEDURE CSV_ZURE_SEARCH 2IS 3顧客CD VARCHAR (255) ; 4A number(10):=8; 5cou number(10):=0; 6 7BEGIN 8 9SELECT 10 顧客CD 11 ,count(顧客CD)as A 12INTO 顧客CD,A 13FROM 14 お客様テーブル 15WHERE 16 性別 NOT IN ('1', '2', '3', '9') 17GROUP BY 18 顧客CD; 19 20while A > cou loop 21DBMS_OUTPUT.PUT_LINE('だめな顧客は' || 顧客CD || 'です'); 22cou:= cou + 1; 23end loop; 24 25END;

・このクエリを実行した際に完全フェッチがリクエストよりも多くの行を戻しましたと出てしまいます。
この原因は、結果が複数行になっているからだと思いますが、どのようにすれば
回避できるでしょうか。

・こちらでは、ずれの検出カラムを性別にしておりますが、カラム変数(設定)できるようにするにはどのようにすればよいでしょうか。

ご教示の程よろしくお願い致します。

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

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

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

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

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

guest

回答2

0

ベストアンサー

桁ずれではなくカラムのずれですよね?
CSVを取り込んだ際にカラムがずれるのは、文字列区切り記号が無く、その文字列中に改行や区切り記号(,等)が含まれる場合です。

そのCSVは上記の内容についてはどのように規定されているものでしょう?
また、そのCSVはどのように取り込まれていますか?(SQL * Loader?)

通常、CSVの取込時にエラーとなる状況は事前に潰しておくものです。
さらにエラーとなる場合はそのCSVファイルを無効なものとして、扱わないと駄目です。
下手に取り込んでしまっては、不整合を起こしてしまったり、後の補正が大変なことになります。

追記

エラー自体は、変数とカラムの名前が同じだからではないですか?

投稿2018/01/08 00:30

編集2018/01/11 13:16
sazi

総合スコア25184

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

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

0

・このクエリを実行した際に完全フェッチがリクエストよりも多くの行を戻しましたと出てしまいます。

エラー・メッセージでググると解決方法が見つかるかと。

投稿2018/01/07 11:00

Orlofsky

総合スコア16415

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問