• 締切済み

ORA-1036??

突然本題ですが、 PL/SQLで条件によりINSERTかUPDATE処理を行いたいのです。 コンパイルは通りましたが、実行すると、 ORA-1036 というエラーが出ます。 マニュアルには ORA-1036:変数のname/numが無効です。 原因:ユーザー・サイドにバインド・コンテキストを見つけられません。 解決方法:バインドされている変数がSQL文に存在することを確認してください。 とあります。 insertやupdateの項目を何度もチェックしましたが、間違っていないと思います。 このエラーがでる可能性というのはどういう場合があるのか是非教えていただきたいのです。 チェックをしたものの、変数の見落としか、あるいは別の可能性があるのか知っている方がいましたら教えてもらえるとすっごく助かります。 あと、バインド・コンテキストとはなんでしょうか? 調べてみましたが、調べ方が悪いのか見つけられませんでした。

noname#5848
noname#5848

みんなの回答

回答No.1

Oracleだと思いますが、値がnullになっていませんか?

noname#5848
質問者

お礼

お礼、というのもまた違うのですが、 なんとか解決したので締め切ることにします。 後々の方の為に原因を残しておくと。。。 すみません、htmlのformのファイル指定ミスでした。 ファイルを指定するのに、なぜかそこだけ.sqlを付けてしまったのです。 ファイル指定の際は.sqlは不必要だったんですね。。。 情けない。

noname#5848
質問者

補足

早速の回答ありがとうございます。 NULLにはなっていないんです。 でも、例えば値がNULLの場合であっても、INSERTやUPDATEをしたいのですが、NULL値でもINSERTやUPDATEってできますよね?

関連するQ&A

  • ORA-01438について

    OracleのPL/SQLの作成で "ORA-01438: 指定した精度を超えた値が列に指定されています"の エラーメッセージが出てしまいます。 PL/SQL上で、値が整数2桁+少数2桁 となるところを計算式を修正し 整数4桁になるようにしたところ、ORA-01438が出るようになりました。 ちなみに全てselectのはずです。 該当のカラムは副問い合わせを介してテーブルから呼んでいるのですが、 大本のカラムには精度(桁数)指定はありません。 いったいこれは何の精度指定に引っ掛かっているのでしょうか。 考えられる可能性を提示して頂けると大変助かります。

  • 『ORA-00936: 式がありません。』の回避方法。

    年の瀬を迎え、気分よく年を越したいのですが、このままでは越せるかどうかわかりません。。。 そこで、お力を貸して下さいm(__)m PL/SQLにてプログラミング中なのですが、SQL実行時に引数の中身が空の為に、ORA-00936: 式がありません。のメッセージが出てしまいます。 これを回避する方法として、 EXCEPTION WHEN OTHERS THEN dbms_output.put_line('取得項目不正'); としてエラーを拾っているのですが、これでは全てのエラーを拾ってしまうので、ORA-00936のみを拾えるEXCEPTIONをお知りの方は教えて下さい。お願いします。

  • ORA-06502のエラー

    以下のPL/SQLを実行すると、ORA-06502:数値または値のエラーとでます。途中までは、INSERTできるのですが、IF文の180個目くらいでエラーになります。そのあたりをCur1の宣言時にWhereで指定するとうまくいきます。 DECLARE CURSOR Cur1 IS SELECT MOJI FROM A_TBL ; CNT NUMBER(10); KAKKO_FL NUMBER(1); BEGIN CNT := 0; KAKKO_FL :=0; FOR Cur_Rec1 IN Cur1 LOOP FOR S IN 1 .. LENGTH(Cur_Rec1.MOJI) LOOP IF(ASCII(SUBSTR(Cur_Rec1.MOJI,S,1)) = 33129) THEN /*33129は'('*/ EXECUTE IMMEDIATE ' INSERT INTO EDD.test1116 VALUES( ''' || Cur_Rec1.MOJI || ''' ) '; END IF; END LOOP; END LOOP; END; なにがなんだか、さっぱりわからないので、どうか、ご教授ください。

  • PL/PCLでORA-06502のエラー

    失礼します。 あるストプロを作成し、VBから引数を渡して実行したところ、"ORA-06502: PL/SQL: 数値または値のエラー::文字列バッファが小さすぎます。"というエラーが出てきてしまいます。 しかし、VBから呼ぶのではなくストプロ単体で動かした場合は正常に動きます。ストプロ単体で動かしても同じエラーが出るのなら納得出来るのですが、VBからでのみエラーが出てきます。原因が全く分かりません。。そういうことってあるのでしょうか?? 何か原因が想像出来る方は教えて頂けると有り難いです。

  • INSERT文の書式

    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'); それではお願いします。 失礼いたします。

  • ORAー12560:TNS:protocol adapter error

    初心者です。ORACLE9iをインストールしました。コマンドラインから sqlplus /nolog SQL>connect /as sysdba と実行しますが、ERROR:ORAー12560:TNS:protocol adapter error となり接続出来ません。スタートメニューからSQL Plusを起動しても同エラーとなります。ORACLE関係のサービスは起動しており、ログインユーザはORACLEをインストールしたユーザでORA_DBAグループにも登録されています。OS再起動を実施しても同エラーです。OSはwindows2000Proです。どこをチェックすれば宜しいでしょうか。

  • 「ORA-29275: 不完全なマルチバイト文字」

    はじめまして。 「ORA-29275: 不完全なマルチバイト文字」についてですが、10gまでのoracleデータベースではデータ登録時にエラーチェックが行われていましたが、11gからパフォーマンス重視の仕様の影響でチェックが行われなくなりました。 これによって、大量のデータの中にORA-29275に該当するデータが混入してしまって困ってます。 オブジェクトブラウザなどの機能を使用してデータの出力を試みても、出力中にORA-29275となり、出力すらできません。 データを適正な形にアップデートしてあげる必要があるのですが、対象のデータを特定する方法はありませんか?(対象の特定ができなければデータを修正できません。)

  • 「ORA-6413 接続がオープンしていません」 エラーについて

    VB6.0で開発したアプリ内でPro*Cプログラムを Shell関数でCALLしてOracle8iデータベース環境に 接続しようとしていますが、Pro*Cプログラム内の CONNECT命令で"ORA-6413 接続がオープンしていません。"が返され、接続できません。 (Pro*Cコンパイル時のNetのバージョンもマシン環境と合わせてあります) どなたか解決策お持ちの方、教えて頂けないでしょうか。よろしくお願いします。 なお、この処理は以前は全く問題なく動いていたのですが、 突然接続エラーが出るようになってしまいました。 ※コーディングは下記のようにしています。 (VB) 変数1 = Shell(PRO*C.exe 接続情報(id/ps@Host) 引数2 引数3 引数4 引数5 引数6 引数7) (Pro*C ちょっと見にくいですが。。) int DBConnect( 接続情報 )     char *接続情報 ; { strcpy( (char *)変数.arr, 接続情報 ) ; 変数.len = strlen( (char *)変数.arr ) ; EXEC SQL CONNECT :変数 ; return(0) ; sqlerr: warning: Err_Print( sqlca.sqlerrm.sqlerrmc ) ; ←Connectでエラーとなりここに飛んでます。Err_Print内でテキストにエラーメッセージを吐いてます return(-1) ; }

  • mysqliを使ってデータベースを表示したいのです

    http://okwave.jp/qa/q8227809.html の続編です。 バインドのところでエラーが出ているようなのですが、原因と修正方法がわかりません。 /* プリペアドステートメントを作成します whereの箇所はプレースホルダ(xxx=?)をつけること! */ $sql = "SELECT * FROM `test_table` WHERE c_name=?"; $stmt = $mysqli->prepare($sql); if($stmt = $mysqli->prepare($sql)) { /* マーカにパラメータをバインドします */ $stmt->bind_param('i', $num); // バインドする変数に設定して送る /* クエリを実行します */ $stmt->execute(); /* 結果変数をバインドします *//*69行目付近*/ $stmt->bind_result($num); /* 値を取得します */ $stmt->fetch(); printf("<BR>%s\n", $num); /* ステートメントを閉じます */ $stmt->close(); } // 切断 $mysqli->close(); Warning: mysqli_stmt::bind_result(): Number of bind variables doesn't match number of fields in prepared statement in C:\xampp\htdocs\job_site4\search_criteria.php on line 69 というエラーが出ます。 解決方法を教えていただきたいです。 よろしくお願いします。

    • ベストアンサー
    • PHP
  • SQL*Loaderで「オブジェクトが存在しない」というエラーが出ます

    SQL*Loaderでデータをインサートしたいのですが、 オブジェクトがあるのに、 「SQL*Loader-941: 表~の記述中にエラーが発生しました。 ORA-04043: オブジェクト~は存在しません。」というエラーが出力されます。 何が原因なのでしょうか? すみませんが教えて下さい!お願いします!