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 on/off 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 までです。)
|