[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 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 までです。)
    

[Prev] [Menu] [Next]