こんにちは、いつもお世話になっております。
現在、会社で動的SQLを使用してとある開発をおこなっているのですが、
どうしても上手くいかないので、どなたか教えて下さいm(__)m
下記の動的SQL文で最後から2行目のSQL:DBMS_OUTPUT.PUT_LINE(varDel);
を実行するとORA-06502: PL/SQL:
数値または値のエラー: 文字列バッファが小さすぎます。のエラーが
発生します、過去ログやgoogleで検索をかけてみたのですが、
どうにも解決方法がわからず困っています・・・・
お知恵のある方、教えて下さいませm(__)m
※多分、sql文が長いせいだとは思うのですが、どうしても
これ以上は短くできず、静的ではなく、動的で動かさなければならない
という条件付きなんですが、宜しく御願いします。
DECLARE
numkeepD NUMBER := 0; -- データ保管期間格納用
varAST VARCHAR2(4) := '**'; -- アクセス区分定義外格納用
varkeepD VARCHAR2(2000); -- KEEP_DAYS取得SQL文格納用
varDel VARCHAR2(2000); -- DELETE文格納用
BEGIN
varkeepD := 'SELECT KEEP_DAYS FROM SMCI4T910 WHERE ACC_KBN = '''||varAST||'''';
DBMS_OUTPUT.PUT_LINE(varkeepD);
EXECUTE IMMEDIATE (varkeepD) INTO numkeepD;
DBMS_OUTPUT.PUT_LINE(numkeepD);
-- アクセスログデータ削除SQL文格納
varDel := 'DELETE FROM '||cTABLE_STCI1T910||' ST910 '
||'WHERE '
||'ST910.DELETE_FLG = SCIS_CTS.cDEL_NO AND '
||'EXISTS('
||'SELECT 1 '
||'FROM SMCI4T910 SM910 '
||'WHERE '
||'ST910.ACC_KBN = SM910.ACC_KBN AND '
||'ST910.ACC_CYMD < TO_CHAR(SYSDATE - SM910.KEEP_DAYS,''YYYYMMDD'') AND '
||'ST910.ACC_KBN <> varAST AND '
||'SM910.DELETE_FLG = SCIS_CTS.cDEL_NO)';
DBMS_OUTPUT.PUT_LINE(varDel);
--EXECUTE IMMEDIATE (varDel)
END;
No.3
- 回答日時:
DBMS_OUTPUTでエラーになるような気がしないんですが・・
DBMS_OUTPUTの部分をコメントにすると、エラーが無くなるんですかね?
ちなみに、組み立てている動的SQL文が間違っているので、もう一度確認された方が良いですよ。
動的SQLをEXECUTEしたところでエラーになるはずです。
返信と御指摘ありがとうございますm(__)m、確かにSQL文が間違っていました・・・・ちなみになんですが、私が調べた範囲内ではDBMS_OUTPUTを使用する際に255バイト(?文字?と言った方がいいのでしょうか)以上の際にエラーが出ました・・・間違っていたらすみません・・
完成したものは下記のような感じになりました。
varDel := 'DELETE FROM '||cTABLE_STCI1T910||' ST910 '
||'WHERE '
||'EXISTS('
||'SELECT 1 '
||'FROM '||cTABLE_SMCI4T910||' SM910 '
||'WHERE '
||'SM910.KEEP_DAYS > 0 AND '
||'ST910.ACC_KBN = SM910.ACC_KBN AND '
||'ST910.ACC_CYMD < TO_CHAR(SYSDATE - SM910.KEEP_DAYS,''YYYYMMDD'') AND '
||'ST910.ACC_KBN <> '''||varAst||''' AND '
||'SM910.DELETE_FLG = '''||SCIS_CTS.cDEL_NO||''')';
※御回答いただいた方、本当にありがとうございました。
No.2ベストアンサー
- 回答日時:
ごめんなさい、"SUBSTRB"の方がいいですね。
文字数ではなくバイトで切り出しです。
すみません、お蔭様で無事に解決できましたm(__)m本当に、ありがとうございます。また、返信が遅れて申し訳ありませんでした・・・・・
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
初めて自分の家と他人の家が違う、と意識した時
子供の頃、友達の家に行くと「なんか自分の家と匂いが違うな?」って思いませんでしたか?
-
フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
あなたが普段思っている「これまだ誰も言ってなかったけど共感されるだろうな」というあるあるを教えてください
-
映画のエンドロール観る派?観ない派?
映画が終わった後、すぐに席を立って帰る方もちらほら見かけます。皆さんはエンドロールの最後まで観ていきますか?
-
海外旅行から帰ってきたら、まず何を食べる?
帰国して1番食べたくなるもの、食べたくなるだろうなと思うもの、皆さんはありますか?
-
天使と悪魔選手権
悪魔がこんなささやきをしていたら、天使のあなたはなんと言って止めますか?
-
ORA-06502のエラー
Oracle
-
【PL/SQL】SQL文が長すぎてSELECTできない
Oracle
-
CASE文のエラーについて
Oracle
-
-
4
PL/SQL PLS-00103エラーについて
Oracle
-
5
SQLローダーCSV取込で、囲み文字がデータ中に入っている場合について
Oracle
-
6
SQLのVARCHARとVARCHAR2の違い
その他(データベース)
-
7
PL/SQLでログを確認したい。
Oracle
-
8
PL/SQLでのTO_DATEの時間取得について
その他(プログラミング・Web制作)
-
9
ORA-01013のエラーについて経験のある方お願いします。
Oracle
-
10
sql*loader 数値のロード
Oracle
-
11
Chr(13)とChr(10)の違いは?
PowerPoint(パワーポイント)
-
12
Oracle 動的SQLでエラー
Oracle
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
アクセスでエラー このフィー...
-
DocuWorksでの印刷
-
FETCHエラー(オラクル)
-
ODBCデータソースが削除できま...
-
psqlの文字コードエラー
-
#1062 - '0' は索引 'PRIMARY' ...
-
複数フィールドの条件について
-
DB2 REORGについて
-
SQLCODE=-420とはどういうエラ...
-
(素人の質問) SQL Server エ...
-
空白はダメというエラーの表示...
-
『ORA-00936: 式がありません。...
-
オラクルでisnumeric?
-
実行時エラー459 withステート...
-
共有フォルダに誰が何にアクセ...
-
Batch: フォルダ内の特定のファ...
-
SQLPLUSで結果を画面に表示しない
-
ADOを使ったDBアクセス後のメモ...
-
Access2002 信頼できず開けま...
-
動的にSPOOLファイルのファイル...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
#1062 - '0' は索引 'PRIMARY' ...
-
アクセスでエラー このフィー...
-
列名に変数を使うことはできな...
-
空白はダメというエラーの表示...
-
SQLserver2005 nvarchar を flo...
-
AccessVBA 実行時エラー'2766'...
-
(素人の質問) SQL Server エ...
-
DocuWorksでの印刷
-
Access2010実行時エラー-21473525
-
UPDATEを使ったSQL文にて
-
オラクル(PL/SQL)のエラー
-
Access 実行時エラー'3075' 対...
-
「1004:アプリケーション定義...
-
実行時エラー459 withステート...
-
エラーについて
-
SQL文長の制限
-
BULK INSERTのエラー取得は可能...
-
SQLCODE=-420とはどういうエラ...
-
DISTINCT + COUNT
-
PL/SQL ORA-06502エラーに関し...
おすすめ情報