sql >> データベース >  >> RDS >> Oracle

オラクル:データが見つかりません-しかしデータは存在します

    この動作の原因を見つけたと確信しています。列は実際にはタイプCHARであり、VARCHAR2ではないと推測しています。

    次の点を考慮してください。

    SQL> CREATE TABLE t (a CHAR(10));
    
    Table created.
    
    SQL> INSERT INTO t VALUES ('FUCHSB');
    
    1 row created.
    
    SQL> SELECT * FROM t WHERE a = 'FUCHSB';
    
    A
    ----------
    FUCHSB
    
    SQL> DECLARE
      2    l VARCHAR2(20) := 'FUCHSB';
      3  BEGIN
      4    SELECT a INTO l FROM t WHERE a = l;
      5  END;
      6  /
    DECLARE
    *
    ERROR at line 1:
    ORA-01403: no data found
    ORA-06512: at line 4
    

    結論:

    • CHARデータ型を使用する場合は、PL/SQL変数をCHARとして宣言してください。
    • 可能であれば、テーブルの列定義にはVARCHAR2データ型を使用してください。 CHARデータ型は、肥大化したVARCHAR2データ型であり、VARCHAR2データ型に機能を追加しません(より多くのスペース/メモリを消費することは機能ではありません)。


    1. XMLとXSDを使用して、データが入力されたデータベースを作成する

    2. MySQLの自動シャットダウン

    3. csvファイルをpostgresqlにインポートしようとしているときに、最後に予期された列の後に追加のデータがあります

    4. Zend Frameworkを使用してDBから整数をフェッチすると、値が文字列として返されます