Domanda

Mi chiedo se è possibile passare parametri a uno script SQL dall'interno di utilità isql di Sybase.

Per esempio, mi piacerebbe conservare una dichiarazione prescelta nel file the_script.sql che sarebbe simile

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

Poi, con quel file, mi piacerebbe "eseguire" da isql con

:r the_script.sql 900 20

con l'aspettativa che $param1 è repleaced con 900 e $param2 con il 20.

C'è la possibilità di ottenere ciò che voglio?

È stato utile?

Soluzione

Guardando il tuo caso d'uso, sembra come se si desidera una stored procedure, quindi ecco quello che ho scritto per voi:

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

Adesso, essendo in isql, è possibile eseguirlo:

exec the_script 900, 20

Saluti.

Altri suggerimenti

Non credo che si può fare positionally dall'interno isql. Utilizzando un wrapper script di shell, si potrebbe fare qualcosa di simile

#!/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

L'unico strumento che conosco per consentire di fare che è sqsh. Esso fornisce un linguaggio che è una miscela di script di shell e SQL. Così si può ottenere lo script di shell (sqsh) per leggere i parametri da linea di comando o un file, ecc e passarli a lotti sql scritti in linea con lo script di shell. http://www.sqsh.org/

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a dba.stackexchange
scroll top