PgBashは、先頭の文字列が SQL, OPTION, POSTGRESQL のシェル変数を使用します。いずれも大文字です。ユーザが、独自のシェル変数を使用する場合、英小文字を使用してください。そうすれば、PgBashが自動的に作成するシェル変数と重なることはありません。
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)
select 結果の列数と列名を保管しています。
直前のinsertの OIDの値を保管しています。
POSTGRESQL_VERSIONは、接続したサーバのPostgreSQLバージョン番号を保管しています。
Webアプリケーションにおいて、次のクッキーの値を参照することができます。
- $HTTP_NCOOKIE:
- クッキーの個数
- ${HTTP_COOKIEKEY[i]}:
- クッキーのキー名
- ${HTTP_COOKIEVAL[i]}:
- クッキーの値
(但し、i は 0 から HTTP_NCOOKIE-1 までです。)