• ベストアンサー

PROCのFETCH結果にごみが。。

PROCでSQLDAを使ってFETCHした結果、V変数を見るとオラクルテーブルのVERCHAR2の値に「ゴミ」が付加される場合があります。 例)「AL」→「AL8b」※8bが付加されている。 いつも起きているわけではないのですが、原因を調査する方法が あれば教えてください。 OS : RedHat Linux ES4(update3) Oracle:10g

  • T-32
  • お礼率50% (1/2)
  • Oracle
  • 回答数1
  • ありがとう数4

質問者が選んだベストアンサー

  • ベストアンサー
  • muyoshid
  • ベストアンサー率72% (230/318)
回答No.1

こんにちわ。 > VERCHAR2の値に「ゴミ」が付加される場合があります。 > いつも起きているわけではないのですが、原因を調査する方法が > あれば教えてください。 多分、前の情報が残っているんだと思います。 Fetch 前に領域を全てゼロクリアするか、T変数を5 に設定して 外部データ型をSTRING 型に強制してはどうでしょうか?

T-32
質問者

お礼

muyoshid様、 T変数を5 に設定して実行して改善できました。 ありがとう御座います。 本当に助かりました。

関連するQ&A

  • oracle10gの精度について

    NUMBER(13.3)で定義されている項目に値1234567890.999を追加しました。 これをsqlplus 経由でselect文を発行して確認すると 1234567891 と表示されす。 また、PROCで確認すると 1234567890.00000 と表示されます。 これらを精度部分も正確に1234567890.999と取得する方法はあるのでしょうか? OS : RedHat Linux ES4(update3) Oracle:10g

  • PDOStatement::fetchについて

    現在phpを学習しており、mysqlにPDOでデータベース接続をしています。 前ページからGETで取得した変数A($varA)があり、 SELECT文で「テーブルA(tableA)のカラムA(columnA)の値が取得した変数Aと一致するもの」という検索条件を指定し、 条件に該当するレコードのカラムB(columnB)の値を取得し、変数B($varB)に代入したいのですが、 $sth = $dbh->prepare("SELECT columnB FROM tableA WHERE columnA = :varA"); $sth ->bindParam(':varA',$varA); $sth ->execute(); まではネットで調べて記述できたのですが、 fetchには沢山の種類があるので、 データ変数B($varB)に該当カラムの値を代入する場合にどれを使ったらよいか分かりませんでした。 1つのカラムの値を取り出すにはどのfetchを利用したら良いのでしょうか? ちなみにcolumnBに入っているのは数字ではなく文字列です。 ご回答、よろしくお願いします。

    • ベストアンサー
    • PHP
  • FETCHでデータが取れているのに、エラーが。。。

    こんにちは。初めて質問させていただきます。 現在仕事で、Pro *Cを使用したプログラムを扱っています。 そこで、質問なのですが、今プログラムの中で、FETCHを行い、データベースから値を持ってきて、SQLDA構造体に格納しているのですが、デバッグでSQLDA構造体のV変数を見ても、ちゃんと格納されているにも関わらず、SQLのエラーコードとして"1403"が返ってきてしまいます。 条件をいろいろと変更してみたのですが、原因がわからず、困っています。 わかりにくい質問かもしれませんが、どうかよろしくお願い致します。 ちなみに、OSは"Linux"を使用しています。

  • PostgreSQLでOracleのDECRIBEに相当するコマンドは?

    Oracleでは、「DESCRIBE テーブル名」でテーブルの構成を確認することができますが、 PostgreSQLには同様のコマンド等はありますか? 使用している環境はRedHat Linux 7.3 PostgreSQLは7.2.1です。 よろしくお願いいたします。

  • 初期化パラメータはOSによって違いがありますか?

    Redhat Enterprise Linux 5.2 でのOracle10gR2の初期化パラメータの調査を依頼されたのですが、 手元に Redhat Enterprise Linux 5.2 のインストールされたマシンが無いので、 WindowsにOracle10gR2をインストールして調査しようと思っています。 そこで質問なのですが、Oracleの初期化パラメータは、OSによって 違いがあるのでしょうか? 私は違いが無いと想像しているのですが、どなたかご教示いただけませんか。

  • ループでCOMMITのUPDATE実行したい。

    SQL初心者です。Oracle 10gで大量データをUPDATEする事になり、 初めてFETCHなどの存在を調査し、知りました。 http://www.shift-the-oracle.com/plsql/fetch-across-commit.html を参照し、『フェッチ・アクロス・コミット 使用例』を実行してみたのですが構文エラーになってしまいます。 テーブルなどは存在していることは確認できています。 そもそもこれは使用例の一部であり何か足りないのでしょうか? また、SQLを発行する際はObject Browserから発行してます。 教えてください。宜しく御願いします。

  • Red Hat Enterprise Linux ES4を使用していま

    Red Hat Enterprise Linux ES4を使用しています。 バージョンを #cat /etc/redhat-release で調べ、 …略…(Nahant Update7) と表示され、OSバージョンは4.7とわかりました。 なのですが、とあるサイトではバージョンは #rpm -q redhat-release で調べられると書かれてあり、 …略… 4ES-8 と表示され、本当は4.8なのか、と混乱しています。 どちらが正しいのでしょうか?そもそも #rpm -q redhat-release コマンドは何の情報を表しているのでしょうか? 教えていただきたく思います。 よろしくお願いいたします。

  • SQLの処理結果について

    お世話になります。 毎回気になっていることがあります。 MySQLでアップデートやインサートを含む一連の処理が正常に行われたかを確認する方法として現在クエリー実行結果がTrueかFalseで判定をしているのですが、これは正しい方法なのでしょうか? 例えばUPDATEをしたあとにphp内で別の処理をする場合、これらのすべての処理が完了したかを確認するし、途中で中断していたらその前の処理も行わない(取り消す)ということは可能なのでしょうか? 例: 1、テーブルからAという値をセレクト 2、A+1 3、テーブルAにアップデート 4、A+1 5、テーブルBに4の値を書き込み 3の処理が失敗している場合、5の処理は行わないというようのしたいのです。 毎回If分岐というのがよいのでしょうか? 複数回判定が必要な場合などぼ方法を教えていただけると幸いです。

    • ベストアンサー
    • PHP
  • oracleでwith句の結果を使ってupdate

    oracleでwith句の結果を使って外部結合?でupdateしたいのですが 上手くいきません。 oracleでは無理なのでしょうか。 よろしくお願いいたします、。 /*---------- with v1 as ( select row_number() over(PARTITION BY ・・・ ORDER BY ・・・) as rnum ,no ,col1 ,・・・ from ・・・ ) update ( select A.col1 A_COL, v1.col2 B_COL from table1 A inner join table2 B on A.cd1=B.cd1 inner join v1 on A.no=v1.no where v1.rnum=1 and ・・・ ) set A_COL=B_COL ; ----------*/ と書いたのですが、 実際に実行してみると、 カッコ「(」、「)」がないとか、 selectが必要とか, A_COLやB_COLが無効ですとか、 となります。 どこが悪いのでしょうか。 oracleではupdateでwithは使えないのでしょうか。 よろしくお願いします。

  • あるテーブルのあるコラムを固定の値に変更したい。

    Oracle 9i Databaseのデータベースがあります。 あるテーブルAがあり、大量のレコードが存在しています。 このテーブルAのコラムaを全件ある固定の値bに変更したいのですが、どのようにすればよいでしょうか。 レコード数が大量(数百万件)にあるので、できればupdateでなく何かSQLLoaderのように高速に行いたいのですが、もしご存知のかた、手順を教えて下さい。(SQLLoaderって追記しかできないのでしょうか??) 宜しくお願いします。