- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:PL/SQLのCREATE文でCHAR型で項目ができない)
PL/SQLのCREATE文でCHAR型で項目ができない
このQ&Aのポイント
- PL/SQLでCREATE文を使用してCHAR型の項目を作成することができません。
- Bテーブルの項目1に値が1の行を持つテーブルを作成するために、PL/SQLのCREATE文を使用しようとしています。
- しかし、実際に実行するとA_TBLの項目、A項目が必ずNUMBER型になってしまいます。初心者のため、どのように対処すればよいかわからない状況です。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
先の投稿で、正しいSQL文を書きましたが・・・ ご自分のプロシジャで組み立てたSQL文が、 どのように成っているか確認しましたか? 確認していないなら、まずは確認してください。 >KBN を CHAR型で宣言しているのですが、だめなのでしょうか? 変数KBNのデータ属性がどうであれ、動的SQLには、関係のないことです。 EXECUTE IMMEDIATE で指定する文字列(SQL文)が全てです。 例えば、KBN:='A';としたら、どんなSQL文が完成するんですか? >「'1']をセットするにはどうすればよいのでしょうか? 文字定数としてのシングルコーティションは、2コ続けて書くことで、 1つのシングルコーティションとして解釈されます。 KBN:=''''; とすると、「'」を代入する意味合いとなります。
その他の回答 (1)
- k_o_r_o_c_h_a_n
- ベストアンサー率55% (526/942)
回答No.1
投げるべきSQL文は・・ CREATE TABLE A_TBL AS SELECT B.項目1,'1' as A項目 FROM B_TBL B であるべきですが、そのようなSQL文に組み立て出来ていますか? CREATE TABLE A_TBL AS SELECT B.項目1,1 as A項目 FROM B_TBL B のようなSQLでは、A項目は、数値定数1の別名ですから、数値項目になるのが 正しい挙動です。
質問者
補足
KBN を CHAR型で宣言しているのですが、だめなのでしょうか?なお、「'1']をセットするにはどうすればよいのでしょうか?
補足
何度もご回答ありがとうございます。もう少し、教えてください。 SQLは、SQL*PLUSで発行し、正しいテーブルが作成できました。 KBN := 'A' で実行すると、 CREATE TABLE A_TBL AS SELECT B.項目1,'A' as A項目 FROM B_TBL B となり、文字列のA項目ができました。 あくまで、文字列の'1'をA項目にセットしたいのですが、どうすればよいのでしょうか? また、シングルコーティションをセットしようとすると、テーブルは作成できるのですが、なぜか、SELECTしたときに、ORA-00600という恐ろしいエラーがでて、実行していません。