今回やりたいのはこんな感じ
- シェルスクリプトで外部SQL実行
- SQL文に変数を使う
- 変数をクォテーションで囲む
この最後のに苦戦したので、覚え書き。
エラーになるプログラム
・SQL
1 |
SELECT SUBSTR(:number, 4) FROM :tablename; |
・shell
1 2 |
emp_no="12345678" psql -f "ファイル名.sql" -v tablename="TABLE_A" -v number=${emp_no} |
これを実行すると、「SUBSTR(数値,数値)はありません」みたいなエラーが…
解決策
無理やりですが、この方法で解決しました。
・SQL
1 |
SELECT SUBSTR(:number, 4) FROM :tablename; |
・shell
1 2 |
emp_no="'12345678'" psql -f "ファイル名.sql" -v tablename="TABLE_A" -v number=${emp_no} |
emp_noをシングルクォーテーション付きの文字列とします。