
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で質問しましょう!
似たような質問が見つかりました
- MySQL 次の時間帯の勝率の合計を求めるSQL文 1 2023/07/04 17:12
- PHP プログラムコードを入力する場合改行してもいいですか? 2 2022/10/02 16:05
- Access(アクセス) access,vbaでフォルダ内のファイルをテーブルにインポート、ファイル名もフィールドに追加したい 1 2022/08/31 11:11
- PHP ここでの ②if($su_d<>"")の比較演算子 を使う理由は 1 2022/03/26 02:33
- PHP ここで言う「アロー演算子」の役割を教えてください。 1 2022/03/26 02:38
- Visual Basic(VBA) VBA ユーザーフォームからSubプロージャ―に値を引き渡す方法 3 2023/04/09 01:54
- MySQL 下の画像はSQLの4大命令の性質をまとめたものであるらしいです UPDATE INSERT DELE 1 2023/06/07 15:36
- PHP php エラー 3 2022/11/18 23:32
- PHP php エラー 2 2022/10/23 16:43
- その他(プログラミング・Web制作) ZWCAD CUIXとLISPの関係について 1 2022/09/28 03:07
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
PL/SQLについて
-
ストアドプロシジャからストア...
-
プロシージャ 引数 指定
-
INSERT文の書式
-
PL/SQLに関して
-
GET_DDLについて
-
Accessのマクロでモジュールを...
-
キャッシュを使わずにSELECTを...
-
日付型カラムへのデータINSERT
-
Statement ignored というエラー
-
Accessの数値から時間に変換す...
-
Access VBAで行ラベルが定義さ...
-
Excel VBAで「プログラム実行」...
-
ODBCリンクの際にACCESSでは読...
-
OutlookVBAで作成したマクロに...
-
SQLserver算術オーバーフロ...
-
エクセルVBAでUserFormを起動し...
-
オラクル システム日付の取得
-
sqlplusでヘッダーが付かない
-
VBAのPublicステートメントにつ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ストアドプロシジャからストア...
-
ストアド実行時のエラー「参照...
-
PL/SQL exceptionを呼び出すには?
-
時間項目を60進数から10進数へ...
-
PL/SQLについて
-
ストアドプロシージャからアナ...
-
INSERT文の書式
-
PL/SQLで連結(||)と結合(=>)の違い
-
PL/SQL 実行中のSID
-
パッケージ内のファンクション...
-
質問:DBMS_OUTPUTの使用方法
-
Function内に記述したdbms_outp...
-
GET_DDLについて
-
ROW_NUMBER()を使用したデータ取得
-
PL/SQLのファンクションでのOUT...
-
プロシージャ 引数 指定
-
ストアド パッケージについて
-
PL/SQLの例外
-
ストアドプロシージャ結果のフ...
-
新人の頃皆さんどうやってSQL勉...
おすすめ情報