Skip to content

Latest commit

 

History

History
160 lines (135 loc) · 7.65 KB

usage07-j.md

File metadata and controls

160 lines (135 loc) · 7.65 KB

[Prev] [Menu] [Next]


Pgbash が使用するシェル変数

PgBashは、先頭の文字列が SQL, OPTION, POSTGRESQL のシェル変数を使用します。いずれも大文字です。ユーザが、独自のシェル変数を使用する場合、英小文字を使用してください。そうすれば、PgBashが自動的に作成するシェル変数と重なることはありません。

SQLの実行状態を表すシェル変数 

PgBashは、SQL実行後の処理結果を次のシェル変数にセットします。

$SQLOID:
(整数型) 最新のinsertのOIDの値
$SQLCODE:
(整数型) SQLエラーコード (9.エラーコード参照)
0 --- 正常終了
100 --- EOF(Eond Of File)
負値 --- SQLエラー
$SQLERRMC:
(文字型) SQLエラーメッセージ(最大70字)
$SQLERRML:
(整数型) SQL エラーメッセージの長さ(<70)
$SQLERRD2:
(整数型) 検索結果の行数(PQntuples()の値)
$SQLERRD3:
(整数型) 検索結果の列数(PQnfields()の値)
$SQLNTUPLE:
(整数型) SQLERRD2と同じ
$SQLNFIELD:
(整数型) SQLERRD3と同じ
${SQLFIELDNAME[i]}:
列名並び(i は 0 から SQLNFIELD-1 まで)

オプション用のシェル変数 

'set option_name[=value];' を使用してセットされた値は、オプション用のシェル変数に保管されます。

$OPTION_ECHO:
turn on/off ECHO query
$OPTION_QUIET:
turn on/off QUIET mode
$OPTION_HEADER:
turn onoff TOP_header
$OPTION_BOTTOM:
turn on/off BOTTOM_print
$OPTION_ALIGNMENT:
turn on/off ALIGNMENT
$OPTION_FRAME:
turn on/off OUTER_FRAME
$OPTION_EXPANDED:
turn on/off EXPANDED
$OPTION_HTML:
turn on/off HTML mode
$OPTION_SEPARATOR:
set SEPARATOR character
$OPTION_NULLSTRING:
set NULL string
$OPTION_ZEROSTRING:
set NULL string
$OPTION_CAPTION:
set NULL string
$OPTION_TABLETAG:
set NULL string

エラーコード用のシェル変数 

PgBashは、SQLエラーコードを次のシェル変数にセットしています。
対話型環境では、'??sqlcode'とするとエラーコードを表示することができます。

pgbash> ??sqlcode

       Value Name        |               Comment                     | Value
-------------------------+-------------------------------------------+--------
 $SQL_OK                 | normal end.                               |0
 $SQL_NOT_FOUND          | EOF(End Of File).                         |100
 $SQL_OUT_OF_MEMORY      | out of memory.                            |-12
 $SQL_SYSTEM_ERROR       | system error.                             |-200
 $SQL_TOO_MANY_ARGUMENTS | too many arguments in fetch_stmt.         |-201
 $SQL_TOO_FEW_ARGUMENTS  | too few  arguments in fetch_stmt.         |-202
 $SQL_CONNECT_ERROR      | database connection error.                |-203
 $SQL_INT_FORMAT         | int format error.                         |-204
 $SQL_UINT_FORMAT        | uint format error.                        |-205
 $SQL_FLOAT_FORMAT       | float format error.                       |-206
 $SQL_NUMERIC_FORMAT     | numeric format error.                     |-207
 $SQL_INTERVAL_FORMAT    | interval format error.                    |-208
 $SQL_DATE_FORMAT        | date format error.                        |-209
 $SQL_TIMESTAMP_FORMAT   | timestamp format error.                   |-210
 $SQL_CONVERT_BOOL       | convert bool error.                       |-211
 $SQL_EMPTY              | empty.                                    |-212
 $SQL_MISSING_INDICATOR  | missing_indicator.                        |-213
 $SQL_NO_ARRAY           | no array.                                 |-214
 $SQL_DATA_NOT_ARRAY     | data not array.                           |-215
 $SQL_ARRAY_INSERT       | array insert error.                       |-216
 $SQL_NO_CONN            | no connection.                            |-220
 $SQL_NOT_CONN           |can not connection.                        |-221
 $SQL_INVALID_STMT       | invalid statements.                       |-230
 $SQL_READONLY_SHELLVAR  | can not set read-only shell variable.     |-231
 $SQL_DB_NOT_OPEN        | database not open.                        |-232
 $SQL_CNAME_NOT_FOUND    | connect-name not found.                   |-233
 $SQL_CNAME_ALREADY_USE  | connect-name already exist.               |-234
 $SQL_INVALID_COMMAND    | invalid command.                          |-235
 $SQL_INVALID_DATA       | invalid data.                             |-236
 $SQL_UNKNOWN_DESCRIPTOR | unknown descriptor.                       |-240
 $SQL_INVALID_DESC_INDEX | invalid descriptor index.                 |-241
 $SQL_UNKNOWN_DESC_ITEM  | unknown descriptor item.                  |-242
 $SQL_VAR_NOT_NUMERIC    | variable not numeric.                     |-243
 $SQL_VAR_NOT_CHAR       | variable not charater.                    |-244
 $SQL_BAD_RESPONSE       | bad response(backend maybe died).         |-400
 $SQL_EMPTY_QUERY        | empty query (backend lost query).         |-401
 $SQL_CONNECTION_BAD     | connection bad(disconnect backend)        |-403
 $SQL_FATAL_ERROR        | query fatal error   (SQL error on backend)|-403
 $SQL_NONFATAL_ERROR     | query nonfatal error(SQL error on backend)|-404
 $SQL_NULL               | indicator is NULL.                        |-1

エラーコードは、(( ))演算式を利用してシェルスクリプトの中で次のように使用します。

(例) insert into test values(111,'aaa','bbb'); if(( SQLCODE < SQL_OK )); then echo $SQLERRMC fi

また、SQL実行後に'?sta'とすると、エラーコードなどを表示することができます。

(例) pgbash> ?sta # Status after executing SQL SQLCODE = 0 (SQL error code) SQLNTUPLE = 4 (number of tuples) SQLNFIELD = 3 (number of fields) SQLERRML = 0 (length of SQLERRMC)

その他のシェル変数 

(1) $SQLNFILED、${SQLFILEDNAME[i]} シェル変数

select 結果の列数と列名を保管しています。

(2) $SQLOID シェル変数

直前のinsertの OIDの値を保管しています。

(3) $POSTGRESQL_VERSION シェル変数

POSTGRESQL_VERSIONは、接続したサーバのPostgreSQLバージョン番号を保管しています。

(4) クッキー用のシェル変数

Webアプリケーションにおいて、次のクッキーの値を参照することができます。

$HTTP_NCOOKIE:
クッキーの個数
${HTTP_COOKIEKEY[i]}:
クッキーのキー名
${HTTP_COOKIEVAL[i]}:
クッキーの値
(但し、i は 0 から HTTP_NCOOKIE-1 までです。)

[Prev] [Menu] [Next]