2

I am wondering if it is possible to pass parameters to an SQL script from within sybase's isql utility.

For example, I'd like to store a select statement in the file the_script.sql that would look something like

select
   col_1,
   col_2,
   etc
from
   table
where
   cond1 > $param1 and
   cond2 < $param2

Then, with that file, I'd like to "execute" it from isql with

:r the_script.sql 900 20

with the expectation that $param1 is repleaced with 900 and $param2 with 20.

Is there a possibility to achieve what I want?

René Nyffenegger
  • 3,763
  • 7
  • 32
  • 39

3 Answers3

3

Looking at your use case, it looks as if you want a stored procedure, so here's one I wrote for you:

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

Now, being in isql, you can run it:

exec the_script 900, 20

Regards.

B0rG
  • 146
  • 5
2

I don't think it can be done positionally from within isql. Using a shell script wrapper, you could do something like

#!/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
Gaius
  • 11,238
  • 3
  • 32
  • 64
0

The only tool I know of to allow you to do that is SQSH. It provides a language that is a blend of shell script and SQL. So you can get your (sqsh) shell script to read parameters from the command line or a file etc. and pass them in to sql batches written in-line with the shell script. http://www.sqsh.org/

Alan
  • 1