Sybaseのisqlユーティリティ内からSQLスクリプトにパラメーターを渡すことができるかどうか疑問に思っています。
たとえば、ファイルthe_script.sql
に次のようなselectステートメントを保存したいとします。
select
col_1,
col_2,
etc
from
table
where
cond1 > $param1 and
cond2 < $param2
次に、そのファイルを使用して、isqlからそれを「実行」します。
:r the_script.sql 900 20
$param1
が900で補充され、$param2
が20で補充されることを期待しています。
私が望むものを達成する可能性はありますか?
ユースケースを見ると、ストアドプロシージャが必要なように見えるので、ここに私が書いたものを示します。
CREATE PROC the_script
(
@param1 int = null,
@param2 int = null
)
AS
BEGIN
select
col_1,
col_2,
etc
from
table
where
cond1 > @param1 and
cond2 < @param2
END
これで、isqlで実行できます。
exec the_script 900, 20
よろしく。
Isql内から定位置で実行できるとは思いません。シェルスクリプトラッパーを使用すると、次のようなことができます
#!/bin/bash
PARAM1=$1
PARAM2=$2
isql -u whoever -p whatever -s myserver << EOF
select * from mytable where mycolumn > ${PARAM1} and mycolumn < ${PARAM2}
go
EOF
私が知っている唯一のツールは、SQSHです。シェルスクリプトとSQLを組み合わせた言語を提供します。したがって、(sqsh)シェルスクリプトを取得して、コマンドラインやファイルなどからパラメーターを読み取り、シェルスクリプトを使用してインラインで記述されたSQLバッチに渡すことができます。 http://www.sqsh.org/