ヘッダーをスキップ
Oracle Rdb SQLリファレンス・マニュアル
リリース7.2
E06178-01
  目次
目次
索引
索引

戻る
戻る
 
次へ
次へ
 


SQL> UPDATE tab1 SET col1 = NULL WHERE CHARACTER_LENGTH(col1) = 0;


表の変更が不可能であるか、VARCHARファンクションが含まれる別の言語でコンパイルされたビューを使用する必要がある場合、この表またはビューを参照するORACLE言語で新規ビューを作成し、長さがゼロのVARCHAR文字列を使用しないようにします。次の例は、表またはOracle以外の言語ビューのVARCHAR列から長さがゼロの文字列を選択しないようにする方法を示しています。


SQL> SET DIALECT 'ORACLE LEVEL1';
SQL> CREATE VIEW view1 (col1, col2)
cont>    AS SELECT SUBSTRING(col1 FROM 1 FOR 2000), col2 FROM tab1;


ファンクションを使用せずにデータが選択される場合、Oracle Rdbオプティマイザの方が効率的です。このため、前述の例の使用が最も適しているのは、長さがゼロの文字列が表に挿入されている疑いがあり、これらを使用しないようにする必要がある場合のみです。

  • ROWNUMキーワードは、選択式で使用でき、問合せで返される行数を制限します。次の例では、SELECT文によって返される行数を9行に制限しています。


    SQL> ATTACH 'FILENAME mf_personnel';
    SQL> SET DIALECT 'ORACLE LEVEL1';
    SQL> SELECT last_name FROM EMPLOYEES WHERE ROWNUM < 10;
     LAST_NAME
     Toliver
     Smith
     Dietrich
     Kilpatrick
     Nash
     Gray
     Wood
     D'Amico
     Peters
    9 rows selected
    


    正の整数以上のROWNUM値の条件テストは常にFALSEであるため、行は返されません。次に例を示します。


    SQL> SELECT last_name FROM EMPLOYEES WHERE ROWNUM > 10;
    0 rows selected
    SQL> SELECT last_name FROM EMPLOYEES WHERE ROWNUM = 10;
    0 rows selected
    


    ROWNUMキーワードに適用される追加制限は、「使用方法」を参照してください。

    ORACLE LEVEL2

    これには、ORACLE LEVEL1に関するすべての動作説明に次の変更が加えられたものが含まれます。

    'string-literal'
    parameter parameter-marker

    次のいずれかにする必要があるruntime-optionsの値を指定します。

    SQL89

    MIA

    次の動作を指定します。

    MIAを指定する場合、キャラクタ・セットは次のように設定されます。

    SQL92

    次の動作を指定します。

    SQL99

    SQL言語がSQL:1999 SQLデータベース言語規格に準拠するように指定します。

    これには、SQL92に関するすべての動作説明に次の変更が加えられたものが含まれます。

    SQLV40

    次の動作を指定します。

    デフォルトはSQLV40です。

    言語オプションの設定値は、表6-15を参照してください。


    使用方法

    • SET DIALECT文の後に次の文が処理されると、SET DIALECT文の設定がオーバーライドされます。

      • SET CHARACTER LENGTH

      • SET QUOTING RULES

      • SET KEYWORD RULES

      • SET VIEW UPDATE RULES

      • SET DEFAULT DATE FORMAT

      • SET DEFAULT CHARACTER SET

      • SET NATIONAL CHARACTER SET

      • SET IDENTIFIER CHARACTER SET

      • SET LITERAL CHARACTER SET

      • SET NAMES


      これらの文によって変更されるのは、現在の接続の設定のみです。

    • MIAを指定してから言語を別の値に変更しても、MIAでは、デフォルト・キャラクタ・セット、各国語キャラクタ・セット、識別子キャラクタ・セットおよびリテラル・キャラクタ・セットは変更されずにそのまま残ります。この場合、これらの各キャラクタ・セットは手動で変更する必要があります。セッションのキャラクタ・セットの変更の詳細は、「SET DEFAULT CHARACTER SET文」「SET IDENTIFIER CHARACTER SET文」「SET LITERAL CHARACTER SET文」および「SET NATIONAL CHARACTER SET文」を参照してください。

    • SHOW CONNECTIONS文を使用して、接続の特性を表示します。

    • 文字データ型の変換時にソース文字列がターゲット文字列より長い場合、MIA、SQL89およびSQLV40の各言語では、結果は左詰めされて右側が切り捨てられ、エラーはレポートされません。
      他のすべての言語では、データ格納時にエラーが返されます。ただし、切り捨てられる文字が空白文字のみである場合、エラーは返されません。データの取得中に切捨てが発生すると、警告が返されます。この場合、切り捨てられた文字列が空白かどうかにかかわらず、警告が返されます。

    • 言語をSQL89に設定する場合、SQLインタフェースを使用してデータベースのデータを挿入または更新するときに(RDOインタフェースを使用して定義された)欠落値の変換を処理できます。値がRDOを使用して欠落値に設定されている場合、SQLを使用した挿入または更新の結果値はNULLです。

    • ROWNUMを列名として使用した場合、列名の変更を考慮してください。考慮しない場合、列の参照時に、列名を一重引用符で囲むか、列名の前に表名を付ける必要があります。

    • ROWNUMキーワードに適用される他の制限は、次のとおりです。

      • ORACLE言語でのみ使用できます。他のすべての言語では、LIMIT TO句を使用する必要があります。

      • 選択式条件の比較でのみ使用できます。

      • SELECT文または選択式でのみ使用できます。

      • LIMIT TO句では使用できません。

      • WHERE句の条件では複数回使用できません。

      • 列とは比較できません。

      • 複合文では使用できません。

      • ORブール演算子のいずれの側でも使用できません。

      • ファンクション・コールでは選択または使用できません。


    例1: SQL92への特性の設定


    SQL> ATTACH 'ALIAS MIA1 FILENAME MIA_CHAR_SET DISPLAY CHARACTER SET SHIFT_JIS';
    SQL> CONNECT TO 'ALIAS MIA1 FILENAME MIA_CHAR_SET' AS 'TEST';
    SQL> SHOW CONNECTIONS TEST;
    Connection: TEST
    Default alias is RDB$DBHANDLE
    Default catalog name is RDB$CATALOG
    Default schema name is SMITH
    Dialect: SQLV40
    Default character unit: OCTETS
    Keyword Rules: SQLV40
    View Rules: SQLV40
    Default DATE type: DATE VMS
    Quoting Rules: SQLV40
    Optimization Level: DEFAULT
    Hold Cursors default: WITH HOLD PRESERVE NONE
    Quiet commit mode: OFF
    Compound transactions mode: EXTERNAL
    Default character set is DEC_MCS
    National character set is DEC_MCS
    Identifier character set is SHIFT_JIS
    Literal character set is SHIFT_JIS
    Display character set is SHIFT_JIS
    
    Alias MIA1:
            Identifier character set is DEC_KANJI
            Default character set is KATAKANA
            National character set is KANJI
    SQL> --
    SQL> -- Change the environment from SQLV40 to MIA.  Notice that the session
    SQL> -- character sets change.
    SQL> --
    SQL> SET DIALECT 'MIA';
    SQL> SHOW CONNECTIONS TEST;
    Connection: TEST
    Default alias is RDB$DBHANDLE
    Default catalog name is RDB$CATALOG
    Default schema name is SMITH
    Dialect: MIA
    Default character unit: CHARACTERS
    Keyword Rules: MIA
    View Rules: ANSI/ISO
    Default DATE type: DATE ANSI
    Quoting Rules: ANSI/ISO
    Optimization Level: DEFAULT
    Hold Cursors default: WITH HOLD PRESERVE NONE
    Quiet commit mode: OFF
    Compound transactions mode: EXTERNAL
    Default character set is KATAKANA
    National character set is KANJI
    Identifier character set is DEC_KANJI
    Literal character set is KATAKANA
    Display character set is SHIFT_JIS
    
    Alias MIA1:
            Identifier character set is DEC_KANJI
            Default character set is KATAKANA
            National character set is KANJI
    SQL> --
    SQL> -- Change the environment from MIA to SQL99.  Notice that the
    SQL> -- session characters DO NOT change from the MIA settings.
    SQL> --
    SQL> SET DIALECT 'SQL99';
    SQL> SHOW CONNECTIONS TEST;
    Connection: TEST
    Default alias is RDB$DBHANDLE
    Default catalog name is RDB$CATALOG
    Default schema name is SMITH
    Dialect: SQL99
    Default character unit: CHARACTERS
    Keyword Rules: SQL99
    View Rules: ANSI/ISO
    Default DATE type: DATE ANSI
    Quoting Rules: ANSI/ISO
    Optimization Level: DEFAULT
    Hold Cursors default: WITH HOLD PRESERVE NONE
    Quiet commit mode: ON
    Compound transactions mode: EXTERNAL
    Default character set is KATAKANA
    National character set is KANJI
    Identifier character set is DEC_KANJI
    Literal character set is KATAKANA
    Display character set is SHIFT_JIS
    
    Alias MIA1:
            Identifier character set is DEC_KANJI
            Default character set is KATAKANA
            National character set is KANJI
    

    例2: 対話型SQLにおける言語の保存および格納

    この例は、対話型SQLで宣言した変数を使用して、代替言語が必要なスクリプトの実行時に言語を(GET ENVIRONMENTを使用して)保存および格納する方法を示しています。この例では、SHOW CONNECTION文を使用して言語をそのまま表示しています。


    SQL> set dialect 'sql99';
    SQL> -- save current dialect
    SQL> declare :dialect char(40);
    SQL> get environment (session) :dialect = DIALECT;
    SQL> print :dialect;
     DIALECT
     SQL99
    SQL> set dialect 'oracle level2';
    SQL> show connection rdb$default_connection;
    Connection: RDB$DEFAULT_CONNECTION
    Default alias is RDB$DBHANDLE
    Default catalog name is RDB$CATALOG
    Default schema name is SMITH
    Dialect: SQL99 (ORACLE LEVEL2)
    Default character unit: CHARACTERS
    Keyword Rules: SQL99
    View Rules: ANSI/ISO
    Default DATE type: DATE VMS
    Quoting Rules: ANSI/ISO
    Optimization Level: DEFAULT
    Hold Cursors default: WITH HOLD PRESERVE NONE
    Quiet commit mode: ON
    Compound transactions mode: EXTERNAL
    Default character set is DEC_MCS
    National character set is DEC_MCS
    Identifier character set is DEC_MCS
    Literal character set is DEC_MCS
    Display character set is UNSPECIFIED
    SQL>
    SQL> -- restore previous dialect
    SQL> set dialect :dialect;
    SQL> show connection rdb$default_connection;
    Connection: RDB$DEFAULT_CONNECTION
    Default alias is RDB$DBHANDLE
    Default catalog name is RDB$CATALOG
    Default schema name is SMITH
    Dialect: SQL99
    Default character unit: CHARACTERS
    Keyword Rules: SQL99
    View Rules: ANSI/ISO
    Default DATE type: DATE ANSI
    Quoting Rules: ANSI/ISO
    Optimization Level: DEFAULT
    Hold Cursors default: WITH HOLD PRESERVE NONE
    Quiet commit mode: ON
    Compound transactions mode: EXTERNAL
    Default character set is DEC_MCS
    National character set is DEC_MCS
    Identifier character set is DEC_MCS
    Literal character set is DEC_MCS
    Display character set is UNSPECIFIED
    SQL>
    


    SET DISPLAY文

    ヘッダー情報の出力を制御します。SHOW DISPLAY文を使用して現在の設定を表示します。

    環境

    SET DISPLAY文は、対話型SQLでのみ使用できます。

    形式



    引数

    COMMENT

    NOCOMMENT

    他のSHOWコマンド(SHOW TABLEなど)によるコメント・テキストの表示を無効または有効にします。

    DEFAULT NULL STRING

    'NULL'テキストの使用に戻します。

    EDIT STRING

    NO EDIT STRING

    列の編集文字列の使用を有効にして、SELECT文の値を書式設定します。列の編集文字列の使用を無効にするには、NO EDIT STRINGを使用します。

    NULL STRING

    対話型SQLによるNULL値の表示方法を変更します。

    QUERY HEADER

    NO QUERY HEADER

    SELECT文、CALL文、FETCH文およびPRINT文によって生成される出力されたヘッダーを有効にします。このヘッダーを無効にするには、NO QUERY HEADERを使用します。

    ROW COUNTER

    NO ROW COUNTER

    SELECT文、DELETE文、INSERT文およびUPDATE文によってレポートされる総カウントを有効にします。後続のカウント・メッセージを無効にするには、NO ROW COUNTERを使用します。

    使用方法

    • 表示列の幅は、最大の列名の長さ、QUERY HEADERの長さ、NULL文字列の長さおよび書式設定されたデータのサイズを使用して計算されます。

    • SET DISPLAY DEFAULT NULL STRING文は、SET DISPLAY NULL STRING 'NULL'に相当します。

    • SET DISPLAY NULL STRINGでは、文字列リテラル、または宣言されたローカル変数が受け入れられます。

    • GET ENVIRONMENT文には、現在定義されているテキストを保存するために使用可能なNULL_STRINGキーワードが含まれます。

    • デフォルトでは、編集文字列が使用され、問合せヘッダーが表示され、行のカウント・メッセージがレポートされます。複数のオプションをカンマで区切って指定できます。ただし、次の例に示すように、1つの文にオプションとその否定形式の両方は指定できません。


      SQL> SET DISPLAY QUERY HEADER, NO QUERY HEADER
      %SQL-F-MULTSPECATR, Multiple specified attribute.
      "QUERY HEADER" was specified more than once
      

    • SQL*Plusとの互換性を確保するために用意されている次のSET文は、SET DISPLAY句に相当します。

      • SET HEADING ONは、SQL SET DISPLAY QUERY HEADER文のシノニムです。SELECT、PRINTおよびFETCHなどのSQL出力文では、列、変数またはその問合せヘッダーの名前が表示されます。

      • SET HEADING OFFは、SQL SET NO DISPLAY QUERY HEADER文のシノニムです。SELECT、PRINTおよびFETCHなどのSQL出力文では、問合せヘッダーの名前は表示されません。

      • SET FEEDBACK ONは、SQL SET DISPLAY NO ROW COUNTER文のシノニムです。SELECT、DELETE、UPDATEおよびINSERTなどのSQLデータ操作文では、関連する行数が表示されます。

      • SET FEEDBACK OFFは、SQL SET DISPLAY ROW COUNTER文のシノニムです。SQLデータ操作文では、関連する行数は表示されません。

      • SET NULLは、SET DISPLAY NULL STRING ' '文のシノニムです。また、SET NULL 'literal'は、SET DISPLAY NULL 'literal'に相当します。


    例1: SET DISPLAY文の使用

    次の例は、SET DISPLAY文の効果を示しています。この例では、SHOW DISPLAYコマンドを使用して現在の設定をレポートしています。


    SQL> ATTACH 'FILENAME mf_personnel';
    SQL>
    SQL> CREATE DOMAIN money INTEGER(2) EDIT STRING '$$$,$$9.99';
    SQL> CREATE TABLE temp_emp (id INTEGER, sal money);
    SQL>
    SQL> SELECT * FROM work_status;
     STATUS_CODE   STATUS_NAME   STATUS_TYPE
     0             INACTIVE      RECORD EXPIRED
     1             ACTIVE        FULL TIME
     2             ACTIVE        PART TIME
    3 rows selected
    SQL>
    SQL> SET DISPLAY NO ROW COUNTER;
    SQL> SHOW DISPLAY
    Output of the query header is enabled
    Output of the row counter is disabled
    Output using edit strings is enabled
    Page length is set to 24 lines
    Line length is set to 132 bytes
    Display NULL values using "NULL"
    SQL> SELECT * FROM work_status;
     STATUS_CODE   STATUS_NAME   STATUS_TYPE
     0             INACTIVE      RECORD EXPIRED
     1             ACTIVE        FULL TIME
     2             ACTIVE        PART TIME
    SQL> INSERT INTO temp_emp (id) VALUES (0);
    SQL> INSERT INTO temp_emp (id, sal)
    cont> SELECT employee_id, MAX(salary_amount)
    cont>   FROM salary_history GROUP BY employee_id;
    SQL> UPDATE temp_emp SET id = NULL WHERE id <= 0;
    SQL> DELETE FROM temp_emp WHERE id IS NULL;
    SQL>
    SQL> SET DISPLAY ROW COUNTER;
    SQL> SHOW DISPLAY
    Output of the query header is enabled
    Output of the row counter is enabled
    Output using edit strings is enabled
    Page length is set to 24 lines
    Line length is set to 132 bytes
    Display NULL values using "NULL"
    SQL>
    SQL> SELECT * FROM work_status;
     STATUS_CODE   STATUS_NAME   STATUS_TYPE
     0             INACTIVE      RECORD EXPIRED
     1             ACTIVE        FULL TIME
     2             ACTIVE        PART TIME
    3 rows selected
    SQL>
    SQL> SET DISPLAY NO QUERY HEADER;
    SQL> SHOW DISPLAY
    Output of the query header is disabled
    Output of the row counter is enabled
    Output using edit strings is enabled
    Page length is set to 24 lines
    Line length is set to 132 bytes
    Display NULL values using "NULL"
    SQL>
    SQL> DECLARE :res INTEGER;
    SQL>
    SQL> -- This omits the query header for the SELECT statement
    SQL> SELECT * FROM work_status;
     0             INACTIVE      RECORD EXPIRED
     1             ACTIVE        FULL TIME
     2             ACTIVE        PART TIME
    3 rows selected
    SQL>
    SQL> -- This omits the query header for the PRINT statement
    SQL> PRINT :res;
               0
    SQL> PRINT 'This is a print line';
     This is a print line
    SQL>
    SQL> CREATE MODULE call_sample
    cont>     LANGUAGE SQL
    cont>     PROCEDURE add_one (IN :a INTEGER, OUT :b INTEGER);
    cont>     SET :b = :a + 1;
    cont> END MODULE;
    SQL> -- This omits the query header for the OUT/INOUT parameters for CALL
    SQL> CALL add_one (100, :res);
             101
    SQL>
    SQL> DECLARE c CURSOR FOR SELECT * FROM work_status;
    SQL> OPEN c;
    SQL> -- This omits the query headers for the variables fetched
    SQL> FETCH c;
     0             INACTIVE      RECORD EXPIRED
    SQL> SET DISPLAY QUERY HEADER;
    SQL> SHOW DISPLAY
    Output of the query header is enabled
    Output of the row counter is enabled
    Output using edit strings is enabled
    Page length is set to 24 lines
    Line length is set to 132 bytes
    Display NULL values using "NULL"
    SQL> -- This outputs the query headers for the variables fetched
    SQL> FETCH c;
     STATUS_CODE   STATUS_NAME   STATUS_TYPE
     1             ACTIVE        FULL TIME
    SQL> CLOSE c;
    SQL>
    SQL> TRUNCATE TABLE temp_emp;
    SQL> INSERT INTO temp_emp (id, sal)
    cont>     SELECT employee_id, AVG(salary_amount)
    cont> FROM salary_history
    cont> WHERE salary_end IS NULL
    cont> GROUP BY employee_id;
    100 rows inserted
    SQL>
    SQL> SELECT * FROM temp_emp ORDER BY id LIMIT TO 3 ROWS;
              ID          SAL
             164   $51,712.00
             165   $11,676.00
             166   $18,497.00
    3 rows selected
    SQL>
    SQL> SET DISPLAY NO EDIT STRING;
    SQL> SHOW DISPLAY
    Output of the query header is enabled
    Output of the row counter is enabled
    Output using edit strings is disabled
    Page length is set to 24 lines
    Line length is set to 132 bytes
    Display NULL values using "NULL"
    SQL>
    SQL> SELECT * FROM temp_emp ORDER BY id LIMIT TO 3 ROWS;
             164     51712.00
             165     11676.00
             166     18497.00
    3 rows selected
    SQL>
    SQL> SET DISPLAY EDIT STRING;
    SQL> SHOW DISPLAY
    Output of the query header is enabled
    Output of the row counter is enabled
    Output using edit strings is enabled
    Page length is set to 24 lines
    Line length is set to 132 bytes
    Display NULL values using "NULL"
    SQL>
    SQL> SELECT * FROM temp_emp ORDER BY id LIMIT TO 3 ROWS;
              ID          SAL
             164   $51,712.00
             165   $11,676.00
             166   $18,497.00
    3 rows selected
    

    例2: 出力を読みやすくするためのテキストへのNULL値の置換


    SQL> select job_start, job_end,
    cont>             (select department_name
    cont>              from departments d
    cont>              where d.department_code = jh.department_code)
    cont> from job_history jh
    cont> where employee_id = '00164';
     JOB_START     JOB_END
     21-Sep-1981   NULL          Board Manufacturing North
      5-Jul-1980   20-Sep-1981   Cabinet & Frame Manufacturing
    2 rows selected
    SQL> set display null string '(still employeed)'
    SQL> select job_start, job_end,
    cont>             (select department_name
    cont>              from departments d
    cont>              where d.department_code = jh.department_code)
    cont> from job_history jh
    cont> where employee_id = '00164';
     JOB_START           JOB_END
     21-Sep-1981         (still employeed)   Board Manufacturing North
      5-Jul-1980         20-Sep-1981         Cabinet & Frame Manufacturing
    2 rows selected
    

    例3: SHOWの出力を読みやすくするためのコメント表示の無効化


    SQL> show domain id_dom
    ID_DOM                          CHAR(5)
     Comment:       standard definition of employee id
    SQL> set display no comment;
    SQL> show domain id_dom
    ID_DOM                          CHAR(5)
    SQL>
    

    例4: GET ENVIRONMENTの使用による現在のNULL文字列の保存、および問合せの実行後のリストア


    SQL> declare :ns varchar(100);
    SQL> get environment (session) :ns = NULL_STRING;
    SQL> set null;
    SQL> select job_start, job_end,
    cont>             (select department_name
    cont>              from departments d
    cont>              where d.department_code = jh.department_code)
    cont> from job_history jh
    cont> where employee_id = '00164';
     JOB_START     JOB_END
     21-Sep-1981                 Board Manufacturing North
      5-Jul-1980   20-Sep-1981   Cabinet & Frame Manufacturing
    2 rows selected
    SQL> set display null string :ns;
    SQL> select job_start, job_end,
    cont>             (select department_name
    cont>              from departments d
    cont>              where d.department_code = jh.department_code)
    cont> from job_history jh
    cont> where employee_id = '00164';
     JOB_START     JOB_END
     21-Sep-1981   NULL          Board Manufacturing North
      5-Jul-1980   20-Sep-1981   Cabinet & Frame Manufacturing
    2 rows selected