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

