結果表を指定します。結果表は、選択式によって指定された条件を満たしている、1つ以上の表またはビューの列と行から導出された値の中間表です。これらの列と行が属する表またはビューは、SELECT文のFROM句で識別されます。SELECT文の基本要素を選択式と呼びます。選択式の詳細は、第2.8.1項を参照してください。
ホスト言語プログラムの結果表の行を取得するには、DECLARE CURSOR文を使用するか、またはシングルトン選択と呼ばれる特殊な形式のSELECT文を使用する必要があります。シングルトン選択文は、1行の結果表を指定します。この文は、プリコンパイルされたプログラムで使用するか、またはSQLモジュールのプロシージャの一部として使用できます。シングルトン選択では、プログラムのホスト言語変数に行の値を割り当てる付加的なINTO句が含まれます。
SELECT文の一般形式の詳細は、「SELECT文: 一般形式」を参照してください。
シングルトン選択文は次の環境で使用できます。
- 対話型SQL内
- プリコンパイル対象のホスト言語プログラムに埋め込まれる場合
- SQLモジュールのプロシージャの一部として
- 動的SQLで動的に実行される文として
INTO parameter
INTO qualified-parameter
INTO variable
パラメータ、修飾されたパラメータ(構造体)または変数のリストを指定して、1行の結果表の列の値を受け取ります。指定された変数は、ホスト・プログラムで宣言されている必要があります。リストで指定された変数がホスト構造体の場合、SQLは、その参照をホスト構造体の各要素への参照とみなします。明示的に指定された、またはホスト構造体への参照によって指定された変数の数が結果表の行の値の数と一致しない場合、SQLは、プログラムのプリコンパイル時またはSQLモジュール・ファイルのコンパイル時にエラーを生成します。
シングルトン選択による結果表の列にNULL値が含まれる場合は、対応するパラメータでインジケータ・パラメータを含む必要があります。
select-list
選択リストの詳細は、第2.8.1項を参照してください。
- SELECT文とは異なり、シングルトン選択には次の制限があります。シングルトン選択では次の操作を実行できません。
- 複数行の結果表の指定(実行するとエラーが生成される)
- INTO句の省略
- SINGLETON SELECT文が1行のみを返すようにするには、LIMIT TO 1 ROW句を使用します。LIMIT TO句の詳細は、第2.8.1項を参照してください。
SQLターミナル・セッションの特性を変更します。次の内容を制御できます。
- 出力で表示される通貨インジケータ
- 日付値または時間値、あるいはその両方の表示書式
- データ・ディクショナリのデフォルトのパス名
- 出力で表示される桁セパレータ
- EDIT *の入力時に編集バッファに含まれる文の数
- 日時の入力および表示における月の略称などに使用される言語
- 出力で表示される行の長さ
- HELP表示のページ長
- セッションが記録されるファイル
- 出力行の数、問合せの各コンパイルおよび実行で許可されている秒数、または問合せの各コンパイルおよび実行で消費されるCPUタイム
- 出力で小数点の表示に使用される文字
- コマンド・ファイルの文の表示
- 廃止予定の機能に関する警告メッセージの表示
- 非標準構文に関する警告メッセージの表示
- 継続文字
これらのSET文は、対話型SQLでのみ使用できます。
CONTINUE CHARACTER
対話型SQLの継続文字を定義します。ほとんど使用されない文字を選択することにより、データベース管理者は、マイナス記号に関する問題を回避してスクリプトで継続文字を使用できます。CURRENCY SIGN currency-char
出力で表示する通貨インジケータを指定します。(列に対してドル記号($)の編集文字列を指定すると、SQLは出力で通貨インジケータを作成します。編集文字列の詳細は、第2.5.2項を参照してください。)代替文字を指定しない場合、デフォルトはドル記号($)または論理名SYS$CURRENCYで指定された値です。
DATE date-number
日付値の表示書式を指定します。date-number引数には数値を入力する必要があります。この数値は、OpenVMSランタイム・ライブラリのドキュメントの表にリストされている日付書式の論理名の数値に対応します。
たとえば、LIB$DATE_FORMAT_006はこの表の論理名の1つです。この論理名で指定される書式では、1957年5月8日は8 May 57と表示されます。論理名の後半部分には数値006が表示されます。
SET DATE FORMAT文を使用して8 May 57の書式を指定するには、LIB$DATE_FORMAT_006論理名の数値部分の6を使用します。数値に含まれる先行ゼロの入力は不要です。
日付書式を指定しない場合、デフォルトはdd-mmm-yyyyです。
DATE FORMAT
日付値または時間値、あるいはその両方の表示書式を指定します。SET DATE FORMAT文のDATEとTIMEの部分には数値引数を指定する必要があります。この数値引数は、特定のOpenVMSランタイム・ライブラリ形式の数値部分と同じです。これらの形式は、OpenVMSランタイム・ライブラリのドキュメントに記載されています。(この文は、OpenVMS形式の日時の論理名を参照する数値のみを受け入れます。ANSI/ISOの日時のデータ型はサポートしていません。)
SET DATE FORMAT DATE文とSET DATE FORMAT TIME文は、日付書式または時刻書式の出力のみを変更します。入力書式を変更する場合は、論理名LIB$DT_INPUT_FORMATを使用します。デフォルト以外の入力書式または出力書式にランタイム・ライブラリの日時ルーチンを使用する前に、コマンド・プロシージャSYS$MANAGER:LIB$DT_STARTUP.COMを実行する必要があります。LIB$DT_STARTUP.COMプロシージャでは、英語以外の言語による日時要素のスペルも定義されます。LIB$DT_INPUT_FORMATの詳細は、OpenVMSランタイム・ライブラリのドキュメントを参照してください。
DICTIONARY path-name
デフォルトのリポジトリ・パス名を指定したパス名に変更します。DIGIT SEPARATOR digit-sep-char
桁セパレータを表示する出力を指定の文字に変更します。桁セパレータは、999を超える値を3桁のグループに分離する記号です。たとえば、数値1,000ではカンマが桁セパレータです。(列に対してカンマ(,)の編集文字列を指定すると、SQLは出力で桁セパレータを作成します。編集文字列の詳細は、第2.5.2項を参照してください。)
digit-sep-char引数は、一重引用符で囲む必要があります。
代替文字を指定しない場合、デフォルトはカンマ(,)または論理名SYS$DIGIT_SEPで指定された値です。
EDIT
引数としてワイルドカードを指定したEDIT文の使用時に作成する編集バッファのサイズを制御します。
- SET EDIT KEEP n
前のn個の文を保存するようにSQLに指示します。たとえば、SET EDIT KEEP 5を指定したとします。EDIT *と入力すると、SQLは前の5つの文を編集バッファに配置します。SET EDIT KEEPで指定する数値は、EDIT文でリコールできる文の最大数です。デフォルトは20です。- SET EDIT NOKEEP
この文はSET EDIT KEEP 0に相当します。SET文のこの形式を使用してEDITまたはEDIT *と入力すると、編集バッファが空になります。SET文のこの形式では、対話型プロセスではなくコマンド・ファイルの実行中にシステム・リソースが保存されます。- SET EDIT PURGE
この文は、KEEPパラメータの値は保持しますが、前の文はすべて消去します。SET EDIT NOKEEPと同様に、SET EDIT PURGE文を使用してEDITまたはEDIT *と入力すると、編集バッファが空になります。ただし、SET EDIT NOKEEP文とは異なり、SET EDIT PURGEを使用するとSQLは後続の文を蓄積し、その後、ユーザーが対話型セッションでEDIT文を発行したときに編集バッファに配置します。
EXECUTE
NOEXECUTE
NO EXECUTE
対話型SQLセッションで発行したデータ操作文を実行するかどうかをSQLに指示します。データベースに対して文を発行する前に、NOEXECUTEオプションを使用して構文が正しいことをチェックする方法は、例を参照してください。SET FLAGSとともにNOEXECUTEオプションを使用すると、問合せに関連する推定コストとアクセス計画を調べることができます。SET NOEXECUTEを指定すると、問合せを実行せずにアクセス計画が表示されます。NO EXECUTEと2語で指定することもできます。この場合もNOEXECUTEと同じ意味です。
EXECUTEまたはNOEXECUTEを指定しない場合、デフォルトはEXECUTEです。
SET NO EXECUTEがアクティブな場合、SET TRANSACTION文は実行されません。SET NO EXECUTEを使用する前にトランザクションを開始または宣言してください。
FLAGGER OFF
事前に設定されている、非標準構文を表すフラガーをすべて無効にします。これはデフォルトです。FLAGGER ON
FLAGGER SQL89
FLAGGER SQL92_ENTRY
FLAGGER MIA
非標準構文、つまりANSI/ISO規格またはMIA規格の拡張機能の構文であることを示す情報メッセージの出力を制御します。SET FLAGGER ONを指定するとSET FLAGGER SQL92_ENTRY ONを指定した場合に相当し、以降にANSI/ISO規格の拡張機能の構文を含む対話型SQL文を発行すると、情報メッセージが表示されます。
SET FLAGGER MIA ONを指定した場合、以降にMIA規格の拡張機能の構文を含む対話型SQL文を発行すると、情報メッセージが表示されます。
フラガーは相互に独立しており、任意の組合せを一度に設定できます。
フラガーを明示的にオンにしない場合は、FLAGGER OFFがデフォルトで設定されます。
LANGUAGE language-name
日時の入力と表示における月の名前および略称の変換に使用する言語を指定します。language-name引数によって、日付リテラルのYESTERDAY、TODAYおよびTOMORROWの変換など、他の言語依存テキストの変換も設定されます。言語を指定しない場合、デフォルトは論理名SYS$LANGUAGEで指定されている言語です。別の言語のスペルを必要とする場合は、SYS$LANGUAGEに加えて論理名SYS$LANGUAGESを定義する必要があります。SYS$LANGUAGESを定義した後にコマンド・プロシージャSYS$MANAGER:LIB$DT_STARTUP.COMを実行する必要があります。次に例を示します。
$ DEFINE SYS$LANGUAGES FRENCH, GERMAN, SPANISH $ RUN SYS$MANAGER:LIB$DT_STARTUP.COM $ SHOW LOGICAL SYS$LANGUAGES "SYS$LANGUAGES" = "FRENCH" (LNM$SYSTEM_TABLE) = "GERMAN" = "SPANISH" $ SHOW LOGICAL SYS$LANGUAGE "SYS$LANGUAGE" = "ENGLISH" (LNM$SYSTEM_TABLE)
SYS$LANGUAGESを定義しない場合、すべての変換ルーチンのデフォルトは英語です。LIB$DT_STARTUP.COMの詳細は、OpenVMSランタイム・ライブラリのドキュメントを参照してください。
SET LANGUAGE文は、データのソートと比較に使用される照合順番には影響しません。CREATE COLLATING SEQUENCE文は、代替の照合順番を指定します。
LINE LENGTH n
SQL出力における代替の行の長さを指定します。数値nを入力して行の長さを指定する必要があります。数値nには、65535オクテットまでの任意の数を指定できます。
SET LINE LENGTH文を使用すると、ファイルまたは代替出力デバイスに送信する出力の代替幅を指定できます。
NOOUTPUT
出力ファイルへの書込みを一時停止します。NOVERIFY
間接コマンド・ファイルは表示しません。デフォルト設定は、DCLコマンドで現在有効な設定です。DCL設定を明示的にVERIFYに変更していない場合、デフォルトはNOVERIFYです。OUTPUT file-spec
出力のターゲット・ファイルを指定します。デフォルトのファイル拡張子は.lisです。ファイル名とともにOUTPUTを指定すると、SQLは、ユーザー指定のログ・ファイルにその出力を書き込みます。このログ・ファイルには、文と結果の両方が含まれます。SET OUTPUT文を発行すると、標準出力(通常は端末)にも出力が書き込まれます。
ファイル名なしでOUTPUTを指定すると、SQLは、ログ・ファイルへの出力の書込みを一時停止して(存在する場合)、標準出力に出力を書き込みます。つまり、ファイル名のないSET OUTPUT文はSET NOOUTPUT文に相当します。
SQLでは、特定の項目(SHOW文で作成されたヘッダーなど)が端末画面にボールド体で表示されます。ただし、ログ・ファイルでは、このボールド体の項目はエスケープ文字で囲まれます。これらのエスケープ文字は無視できます。ログ・ファイルから削除するか、またはSQLがボールド体で文字を表示しないように端末を設定できます。
次のDCLコマンドを使用してボールド体を無効にすると、エスケープ文字はログ・ファイルに含まれなくなります。
$ SET TERM/NOANSI_CRT
PAGE LENGTH n
SQLヘルプのページのサイズを設定します。PAGE LENGTH句については、次の点に注意します。
- 整数値には10〜32767の値を指定してください。
- SET PAGE LENGTHを使用すると、ページ長を32000などの大きい値に設定することにより、ヘルプで実行されるページングを実質的に無効にできます。
- ページ長は対話型SQLの起動時に自動的に設定され、そのセッションのOpenVMS端末の設定に基づきます。
- SHOW DISPLAYコマンドを使用すると、現在定義されているページ長を表示できます。
RADIX POINT radix-char
小数点を表示する出力を指定の文字に変更します。小数点は、数値を小数部分から区別する記号です。たとえば、数値98.6ではピリオドが小数点になります。radix-char引数は、一重引用符で囲む必要があります。
代替文字を指定しない場合、デフォルトはピリオド(.)か、論理名SYS$RADIX_POINTで指定された値です。
sql-plus-options
これらの文は、Oracle Rdbに対して実行されるSQL*Plusスクリプトで使用できます。
表6-13 サポートされているSQL*PlusのSET文 SQL*Plusコマンド 同義のOracle Rdb文 SET ECHO ON SET VERIFY SET ECHO OFF SET NOVERIFY SET HEADING ON SET DISPLAY QUERY HEADER SET HEADING OFF SET DISPLAY NO QUERY HEADER SET FEEDBACK ON SET DISPLAY ROW COUNTER SET FEEDBACK OFF SET DISPLAY NO ROW COUNTER SET NULL SET DISPLAY DEFAULT NULL STRING SET NULL 'literal' SET DISPLAY NULL STRING 'literal'
TIME time-number
時間値の表示書式を指定します。time-number引数には数値を入力する必要があります。この数値は、OpenVMSランタイム・ライブラリのドキュメントの表にリストされている時刻書式の論理名の数値に対応します。
たとえば、この表には論理名LIB$TIME_FORMAT_020が含まれています。この論理名で指定される書式では、1日の8時間4分32秒は8 h 4 min 32 sと表示されます。論理名の後半部分には数値020が表示されます。
SQL SET DATE FORMAT TIME文で8 h 4 min 32 sの書式を指定するには、LIB$TIME_FORMAT_020論理名の数値部分の20を使用します。数値に含まれる先行ゼロの入力は不要です。
時刻書式を指定しない場合、デフォルトはhh:mm:ss.ccです。
VERIFY
間接コマンド・ファイルの実行時にこのファイルを端末に表示します。WARNING DEPRECATE
WARNING NODEPRECATE
廃止されたSQL構文を含む文を発行したときに、対話型SQLで診断メッセージを表示するかどうかを指定します。廃止予定の構文または廃止された構文とは、SQLの以前のバージョンでは使用可能だったがその後変更された構文のことです。このような構文は、将来のバージョンではサポートされない可能性があるため、使用しないことをお薦めします。デフォルトでは、廃止された構文を含む文の発行後に警告メッセージが表示されます(SET WARNING DEPRECATE)。SET WARNING NODEPRECATEを指定すると、廃止された構文に関するメッセージは表示されません。
- SET LANGUAGE文は、データのソートと比較に使用される照合順番には影響しません。CREATE COLLATING SEQUENCE文は、代替の照合順番を指定します。
- SET LANGUAGE文は、動的SQLでは使用できません。かわりに、表6-14に記載されている論理名SYS$LANGUAGEを使用する必要があります。
- SET RADIX POINT文は、出力表示でのみ小数点を変更します。入力文字は変更されません。入力文字では常にピリオドを使用する必要があります。
- SET DIGIT SEPARATOR文は、出力表示でのみ桁セパレータを変更します。データの挿入時は桁セパレータを使用できません。
- SET DATE FORMAT文で使用可能な代替日時書式は、日付文字列のテキスト・リテラルとそのバイナリ日付との変換にのみ適用されます。
- SET DATE FORMAT文は、編集文字列を使用して指定した入力書式または出力書式をオーバーライドしません。
- デフォルトの通貨インジケータまたは桁セパレータを作成するには、その列の編集文字列を指定するか、SELECT文でEDIT USING句を使用する必要があります。
- 表6-14は、SET文の国際化に使用できる論理名を示しています。通貨記号、日時の出力書式、桁セパレータ、言語および小数点を指定できます。
表6-14 SET文の国際化に使用する論理名 SQL SET文 関連システム
論理名CURRENCY SIGN SYS$CURRENCY
DATE FORMAT DATE date-number LIB$DT_FORMAT DATE FORMAT TIME time-number LIB$DT_FORMAT DIGIT SEPARATOR SYS$DIGIT_SEP
LANGUAGE SYS$LANGUAGE
RADIX POINT SYS$RADIX_POINT
日時の入力書式を変更するには、OpenVMSランタイム・ライブラリのドキュメントに記載されている論理名LIB$DT_INPUT_FORMATを使用する必要があります。SQLのSET DATE FORMAT DATE文とSET DATE FORMAT TIME文は、出力表示の日付書式と時刻書式のみを変更します。- SET FLAGGER ON文は、SET FLAGGER SQL92_ENTRY ON文と同義です。
- フラガーのオンとオフは相互に関係なく設定できます。次に例を示します。
SQL> SHOW FLAGGER The flagger mode is OFF SQL> -- SQL> SET FLAGGER SQL89 ON; SQL> SHOW FLAGGER %SQL-I-NONSTASYN89, Nonstandard SQL89 syntax The SQL89 flagger mode is ON SQL> -- SQL> SET FLAGGER MIA ON; %SQL-I-NONSTASYN89, Nonstandard SQL89 syntax SQL> SHOW FLAGGER %SQL-I-NONSTASYN89, Nonstandard SQL89 syntax The SQL89 flagger mode is ON The MIA flagger mode is ON SQL> -- SQL> SET FLAGGER SQL92_ENTRY ON; %SQL-I-NONSTASYN, Nonstandard syntax %SQL-I-NONSTASYN89, Nonstandard SQL89 syntax SQL> SHOW FLAGGER %SQL-I-NONSTASYN89, Nonstandard SQL89 syntax %SQL-I-NONSTASYN92E, Nonstandard SQL92 Entry-level syntax The SQL89 flagger mode is ON The SQL92 Entry-level flagger mode is ON The MIA flagger mode is ON SQL> -- SQL> SET FLAGGER SQL89 OFF; %SQL-I-NONSTASYN, Nonstandard syntax %SQL-I-NONSTASYN89, Nonstandard SQL89 syntax %SQL-I-NONSTASYN92E, Nonstandard SQL92 Entry-level syntax SQL> SHOW FLAGGER; %SQL-I-NONSTASYN92E, Nonstandard SQL92 Entry-level syntax The SQL92 Entry-level flagger mode is ON The MIA flagger mode is ON
- 標準出力を再定義して出力をファイルにリダイレクトすることはできません。出力をファイルにリダイレクトするにはSET OUTPUT文を使用します。
- 継続文字には、SQL言語の有効な終端文字を使用する必要があります。#、(、)、*、+、,、-、.、/、:、;、?、[、\、]、{、|、および}がその文字です。
- 現在、対話型SQLは1オクテットの値のみをサポートしています。
- 現在の継続文字を表示するにはSHOW CONTINUE CHARACTERを使用します。
例1: SET文を使用したターミナル・セッションの特性の設定SET文を次のように使用すると、ターミナル・セッションの特性を設定できます。
SQL> -- SQL> -- You can put the SET statements in your sqlini file, which sets up SQL> -- your SQL session. SQL> -- SQL> SET OUTPUT 'LOG.LIS' SQL> SET DICTIONARY 'CDD$TOP.DEPT3' SQL> SET EDIT KEEP 10 SQL> -- SQL> ATTACH 'ALIAS PERS FILENAME personnel'; SQL> SHOW ALIAS Alias PERS: Rdb database in file personnel SQL> EXIT
この例では、SET文は次のように特性を設定します。
- SET OUTPUT文は、現在のデフォルト・パス名でLOG.LISと呼ばれるファイルをオープンします。この時点以降、エラー・メッセージを含むすべての入出力がこのファイルに表示されます。次の例は、ログ・ファイルLOG.LISに書き込まれる内容を示しています。
SET DICTIONARY 'CDD$TOP.DEPT3' SET EDIT KEEP 10 -- ATTACH 'ALIAS PERS FILENAME personnel'; SHOW ALIAS Alias PERS: Rdb database in file personnel EXIT
- SET DICTIONARY文は、デフォルトのリポジトリ・パス名を変更します。
- SET EDIT KEEP文は、EDIT *の入力時に前の10個の文を編集バッファに入れるように指定します。
- ATTACH文は、人事データベースにアタッチし、そのデータベースに対して別名PERSを宣言します。
- SHOW ALIAS文は、宣言されている別名をユーザーに伝えます。
例2: SET CURRENCY SIGN文およびSET DIGIT SEPARATOR文
次の例は、SET DIGIT SEPARATOR文を使用して、編集文字列で使用された場合のSET CURRENCY SIGN文およびSET DIGIT SEPARATOR文の動作を示しています。
SQL> -- SQL> -- This example shows the edit string 'ZZZ,ZZZ', SQL> -- which specifies the comma as the default digit separator. SQL> -- SQL> ALTER TABLE SALARY_HISTORY - cont> ALTER SALARY_AMOUNT EDIT STRING 'ZZZ,ZZZ'; SQL> SELECT SALARY_AMOUNT FROM SALARY_HISTORY; SALARY_AMOUNT 26,291 51,712 26,291 50,000 . . . SQL> -- SQL> -- Now use the SET DIGIT SEPARATOR statement to specify that SQL> -- the period will be the digit separator instead of SQL> -- the comma. SQL> -- SQL> SET DIGIT SEPARATOR '.' SQL> SELECT SALARY_AMOUNT FROM SALARY_HISTORY; SALARY_AMOUNT 26.291 51.712 26.291 50.000 . . .
次の例は、様々なSET文を使用してアプリケーションを国際化する方法を示しています。
SQL> -- SQL> -- This first statement specifies the dollar sign SQL> -- as the currency indicator. It does this by using SQL> -- the edit string '$(9).99'. SQL> -- SQL> ALTER TABLE SALARY_HISTORY - cont> ALTER SALARY_AMOUNT EDIT STRING '$(9).99'; cont> SELECT SALARY_AMOUNT FROM SALARY_HISTORY; SALARY_AMOUNT $26291.00 $51712.00 $26291.00 $50000.00 . . . SQL> -- SQL> -- The SET CURRENCY statement now changes the currency SQL> -- indicator to the British pound sign, £. Notice SQL> -- the changed output. SQL> -- SQL> SET CURRENCY SIGN '£' SQL> SELECT SALARY_AMOUNT FROM SALARY_HISTORY; SALARY_AMOUNT £26291.00 £51712.00 £26291.00 £50000.00 £11676.00 . . . SQL> -- SQL> -- The next examples show the SET DATE FORMAT statement. SQL> -- SQL> -- The SET DATE FORMAT statement will not override input SQL> -- and output formats that you have specified with an edit SQL> -- string. The following SET DATE FORMAT examples use the SQL> -- SALARY_START and SALARY_END columns. The SALARY_START SQL> -- and SALARY_END columns are defined by the domain SQL> -- DATE_DOM, which uses the edit string 'DD-MMM-YYY'. SQL> -- Thus, to test the SET DATE FORMAT statement, you must SQL> -- first remove the edit string from the DATE_DOM domain SQL> -- using the following ALTER DOMAIN statement: SQL> -- SQL> ALTER DOMAIN DATE_DOM NO EDIT STRING; SQL> -- SQL> -- The next statement inserts a row with time information. SQL> -- The subsequent SET DATE FORMAT statements will use this row: SQL> -- SQL> INSERT INTO SALARY_HISTORY cont> -- list of columns: cont> (EMPLOYEE_ID, cont> SALARY_AMOUNT, cont> SALARY_START, cont> SALARY_END) cont> VALUES cont> -- list of values: cont> ('88339', cont> '22550', cont> '14-NOV-1967 08:30:00.00', cont> '25-NOV-1988 16:30:00.00') cont> ; 1 row inserted SQL> -- SQL> -- Using the row that was just inserted, the following statement SQL> -- shows the default date and time output: SQL> -- SQL> SELECT SALARY_START, SALARY_END FROM SALARY_HISTORY- cont> WHERE EMPLOYEE_ID = '88339'; SALARY_START SALARY_END 14-NOV-1967 08:30:00.00 25-NOV-1988 16:30:00.00 1 row selected SQL> -- SQL> -- The SET DATE FORMAT DATE statement customizes the SQL> -- output of the date format. SQL> -- SQL> -- The output will appear in the form SQL> -- 14 NOV 67, as specified by the date-number argument 6. SQL> -- SQL> SET DATE FORMAT DATE 6; SQL> SELECT SALARY_START, SALARY_END FROM SALARY_HISTORY- cont> WHERE EMPLOYEE_ID = '88339'; SALARY_START SALARY_END 14 NOV 67 25 NOV 88 1 row selected SQL> -- SQL> -- The SET DATE FORMAT TIME statement customizes SQL> -- the output of the time format. The output will appear SQL> -- in the form 16 h 30 min 0 s, as specified by the SQL> -- time-number argument 20. SQL> -- SQL> SET DATE FORMAT TIME 20; SQL> SELECT SALARY_START, SALARY_END FROM SALARY_HISTORY- cont> WHERE EMPLOYEE_ID = '88339'; SALARY_START SALARY_END 8 h 30 min 0 s 16 h 30 min 0 s 1 row selected SQL> -- SQL> -- Note that the previous date example has deleted SQL> -- the time output, and the previous time example has SQL> -- deleted the date output. SQL> -- SQL> -- If you want the display to continue to show SQL> -- BOTH date and time, you must specify SQL> -- both arguments with the SET DATE statement. SQL> -- SQL> SET DATE FORMAT DATE 6, TIME 20; SQL> SELECT SALARY_START, SALARY_END FROM SALARY_HISTORY- cont> WHERE EMPLOYEE_ID = '88339'; SALARY_START SALARY_END 14 NOV 67 8 h 30 min 0 s 25 NOV 88 16 h 30 min 0 s 1 row selected SQL> -- SQL> -- The next example changes the digit separator to a period and SQL> -- the radix point to a comma: SQL> -- SQL> ALTER TABLE SALARY_HISTORY - cont> ALTER SALARY_AMOUNT EDIT STRING 'ZZZ,ZZZ.ZZ'; SQL> -- SQL> SET RADIX POINT ',' SQL> SET DIGIT SEPARATOR '.' SQL> SELECT SALARY_AMOUNT FROM SALARY_HISTORY; SALARY_AMOUNT 26.291,00 51.712,00 26.291,00 50.000,00 . . . SQL> -- SQL> -- This example shows how you can use the SET LANGUAGE SQL> -- statement to change the output of dates to a particular SQL> -- language. This example shows the default English first, SQL> -- followed by French. SQL> -- SQL> -- Note that the time format is still based on SQL> -- the SET DATE FORMAT TIME statement SQL> -- previously executed in this example. SQL> -- SQL> SELECT SALARY_START FROM SALARY_HISTORY; SALARY_START 5 JUL 80 0 h 0 min 0 s 14 JAN 83 0 h 0 min 0 s 2 MAR 81 0 h 0 min 0 s 21 SEP 81 0 h 0 min 0 s 3 NOV 81 0 h 0 min 0 s 1 JUL 82 0 h 0 min 0 s 27 JAN 81 0 h 0 min 0 s 1 JUL 75 0 h 0 min 0 s 29 DEC 78 0 h 0 min 0 s 2 FEB 80 0 h 0 min 0 s 8 APR 79 0 h 0 min 0 s 19 AUG 77 0 h 0 min 0 s . . . SQL> -- SQL> SET LANGUAGE FRENCH SQL> SELECT SALARY_START FROM SALARY_HISTORY; SALARY_START 5 jul 80 0 h 0 min 0 s 14 jan 83 0 h 0 min 0 s 2 mar 81 0 h 0 min 0 s 21 sep 81 0 h 0 min 0 s 3 nov 81 0 h 0 min 0 s 1 jul 82 0 h 0 min 0 s 27 jan 81 0 h 0 min 0 s 1 jul 75 0 h 0 min 0 s 29 déc 78 0 h 0 min 0 s 2 fév 80 0 h 0 min 0 s 8 avr 79 0 h 0 min 0 s 19 aoû 77 0 h 0 min 0 s . . . SQL> --