web-dev-qa-db-ja.com

isqlから「SQLスクリプト」にパラメーターを渡す方法

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で補充されることを期待しています。

私が望むものを達成する可能性はありますか?

2

ユースケースを見ると、ストアドプロシージャが必要なように見えるので、ここに私が書いたものを示します。

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

よろしく。

3
B0rG

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
2
Gaius

私が知っている唯一のツールは、SQSHです。シェルスクリプトとSQLを組み合わせた言語を提供します。したがって、(sqsh)シェルスクリプトを取得して、コマンドラインやファイルなどからパラメーターを読み取り、シェルスクリプトを使用してインラインで記述されたSQLバッチに渡すことができます。 http://www.sqsh.org/

0
Alan