Входной параметр для скрипта
GuestM
Дата: 09.10.2003 12:58:00
Уважаемые, у меня такой вопрос. Всем известно , что в ХП можно использовать input parametr. Можно ли использовать его, и каким образом занести, в произвольный скрипт.Например есть такой файл testExport.sql со следующим кодом:
declare @n int,
@v varchar(15),
@inputId INT --входящий параметр
DECLARE Curs_insert CURSOR
FOR
select ID, [Name] from table where ID=@inputID
open Curs_insert
FETCH Curs_insert
INTO @n, @v
while @@FETCH_Status=0
begin
print 'test'+@V;
FETCH Curs_insert
INTO @n, @v
end
Close Curs_insert
DEALLOCATE Curs_insert
Как в командную строку типа:
isqlw.exe -S SQL-SERVER -d RISexp-copy -E -i C:\testExport.sql -o o.txt
внести входящий параметр
Буду благодарен за помощь
iSestrin
Дата: 09.10.2003 13:16:25
кроме -i есть еще -q, туда и заноси, оформив скрипт как хп
GuestM
Дата: 09.10.2003 14:04:32
Извините, не понял. Какой -q. В синтаксисе isqlw аргумента -q нет:
Syntax
isqlw
[-?] |
[
[-S server_name[\instance_name]]
[-d database]
[-E] [-U user] [-P password]
[{-i input_file} {-o output_file} [-F {U|A|O}]]
[-f file_list]
[-C configuration_file]
[-D scripts_directory]
[-T template_directory]
]
iSestrin
Дата: 09.10.2003 14:22:22
хм, это я невнимательно прочитал видимо, и подумал, раз требуется пакетная обработка, то isql.exe
GuestM
Дата: 09.10.2003 14:29:37
Спасибо. Уже нашел.
GuestM
Дата: 09.10.2003 16:27:36
Подсобите, плиз, спецы, что -то не выходит передать входной параметр в пакетный файл, скрипт в ключе -q и скрипт файла выполняются независимо. Как совместить мона .
у меня выполняется :
osql ... -q "declare inputID int set @inputID=3" -i C:\testExport.sql -o o.txt -e
где testExport.sql:
declare @n int,
@v varchar(15)
--@inputId INT входящий параметр
DECLARE Curs_insert CURSOR
FOR
select ID, [Name] from table where ID=@inputID
open Curs_insert
FETCH Curs_insert
INTO @n, @v
while @@FETCH_Status=0
begin
print 'test'+@V;
FETCH Curs_insert
INTO @n, @v
end
Close Curs_insert
DEALLOCATE Curs_insert
GuestM
Дата: 10.10.2003 11:22:36
Неужели никто не знает как использовать osql с входным параметром для файла с инструкциями *.sql, не путать с примером
SET table = sysobjects
osql /q "Select * from %table%", где параметр помещается в командную строку osql. Могет кто знает другой способ.
Glory
Дата: 10.10.2003 11:48:51
Ну так создайте bat файл
osql /E /Q "Select * from %1 Select * from %2"
и вызовите его
my.bat pubs..authors, northwind..employees
GuestM
Дата: 10.10.2003 12:21:02
Уважаемый Glory. Вы ,наверное, меня не так поняли, или я без царя в голове. Мне нужно передать параметр не в бат файл, который у мене есть
(osql.exe -n -S SQL-SERVER -d RISexp-copy -E -i C:\T-SQL\testExport.sql -o out.txt -e), а в скриптовый файл testExport.sql с нижеследующим кодом
declare @n int,
@v varchar(15),
@inputId INT --входящий параметр который нужно передать в файл
DECLARE Curs_insert CURSOR
FOR
select ID, [Name] from table where ID=@inputID
open Curs_insert
FETCH Curs_insert
INTO @n, @v
while @@FETCH_Status=0
begin
print 'test'+@V;
FETCH Curs_insert
INTO @n, @v
end
Close Curs_insert
DEALLOCATE Curs_insert
СПАСИБО за участие
Павел Воронцов
Дата: 10.10.2003 12:57:01
script_tmpl.bat:
declare @n int,
@v varchar(15),
@inputId INT --входящий параметр который нужно передать в файл
DECLARE Curs_insert CURSOR
FOR
set @inputID = %1
select ID, [Name] from table where ID=@inputID
open Curs_insert
FETCH Curs_insert
INTO @n, @v
while @@FETCH_Status=0
begin
print 'test'+@V;
FETCH Curs_insert
INTO @n, @v
end
Close Curs_insert
DEALLOCATE Curs_insert |
|
start.bat
@prompt $S
@script_templ 2 > script.sql
@osql blahblahblah -o script.sql |
|