
oracleに触るの初めてなのにストアドなんて書くことに・・
助けを頂けたらと思います。
ストアドの中でですが・・・・
INSERT文の中ではテーブルの項目が2つ以上あるとき、
変数にその2つ以上分の値を文字列として入れておいて
、その値をINSERT文に流すことってできないのでしょう
か?
test_str := (' ''テスト1'' , ''テスト2'' ');
insert into TestTable (test1 , test2 ) values (test_str);
上記のように書くと
PL/SQL: ORA-00947: 値の個数が不足しています。
とのエラーが帰ってきます。
上記のように変数を使って下記のように解釈させたいのですが無理なのでしょうか?
insert into TestTable (test1 , test2 ) values ('テスト1','テスト2');
それではお願いします。 失礼いたします。
No.2ベストアンサー
- 回答日時:
ストアドでなくVBあたりから文字列を渡すのであればできるでしょうが、PL/SQLでのプロシージャの記述は厳格に解析するので無理と思いますよ。
1つの文字列はシングルクォーテーションでくくってもカンマを打っても1つの文字列と解析されます。第一そうでないと、カンマやシングルクォーテーションをデータとしてINSERTできません。ところで、なぜ上記のような書き方をしたいのでしょうか。変数を増やしたくないからとか?2つの文字列を1つの文字列で処理しようとするのはけっこうイレギュラーな操作になります。
上記のような書き方はできませんが、なぜそうしたいと思ったのかを書いたら、誰かがそれ以外の何かしらの方法を教えてくれるかもしれません。(質問のタイトルを目にしてみんな見に来るので、別の質問として新たに投稿したほうがいいかもしれませんが)
ありがとうございます。
できないということですね。理由がはっきりわかって納得です。
そのような書き方がしたい理由なのですが、、
もともと、一つにつながっている状態のデータを受け取るので、それを置換したら簡単にできるかな。と思っただけです。
困り度を3にしたのはこの件で先輩ができる!!というのにOracleの本をず~っと読んでもできなさそう。で言い争いになったので早く結論がほしかったのです。w
ありがとうございました。

No.1
- 回答日時:
test_str1 := ('テスト1');
test_str2 := ('テスト2');
insert into TestTable (test1 , test2 ) values (test_str1,test_str2);
じゃだめなの?
PL/SQL: ORA-00947: 値の個数が不足しています
はインサートする列が2つあるのに値が1つしかないと言うことです。
すばやい解答ありがとうございます。
ダメ・・ということは無いです。
質問の内容のような書き方をできたらしたかったので・・
質問したやり方ではできないということなので、この方法でやります。
ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
パッケージ内のファンクション...
-
時間項目を60進数から10進数へ...
-
ストアドプロシジャからストア...
-
プロシージャ 引数 指定
-
ストアド実行時のエラー「参照...
-
ストアドプロシージャからアナ...
-
ストアドについて
-
Accessのマクロでモジュールを...
-
Statement ignored というエラー
-
Access VBAで行ラベルが定義さ...
-
PL/SQLカーソルの2重FORループ...
-
キャッシュを使わずにSELECTを...
-
SQLで部分的にGROUP BYしたいとき
-
likeとsubstrの使いわけについて
-
エクセルVBAでUserFormを起動し...
-
sqlplusでヘッダーが付かない
-
別のスキーマのテーブルアップ...
-
重複するIDのデータを1行にま...
-
WHERE句の実行順序
-
sqlplusのspoolで空白行出現
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ストアドプロシジャからストア...
-
ストアド実行時のエラー「参照...
-
INSERT文の書式
-
PL/SQLのファンクションでのOUT...
-
PL/SQL exceptionを呼び出すには?
-
ストアドプロシージャからアナ...
-
PL/SQLについて
-
時間項目を60進数から10進数へ...
-
パッケージ内のファンクション...
-
PL/SQL 実行中のSID
-
質問:DBMS_OUTPUTの使用方法
-
毎日決まった時間にSQLを実...
-
ROW_NUMBER()を使用したデータ取得
-
PL/SQLに関して
-
OracleのTEXT_IOについて
-
ストアドについて
-
PL/SQLの例外
-
Function内に記述したdbms_outp...
-
PL/SQLのパフォーマンスについて
-
ストアドファンクション中でcon...
おすすめ情報