Эквивалентно sp_executesql в Sybase
Что эквивалентно sp_executesql Sql Server в sybase.
3 ответа
Я думаю exec()
это то, что вы ищете. См. http://infocenter.sybase.com/help/index.jsp?topic=/com.sybase.help.ase_15.0.commands/html/commands/commands56.htm.
@jasir: ограничение до 255 символов является результатом определения вашей процедуры. Не возможно ли расширить этот предел, определив, например, varchar (1024)?
ASE Refrence Manual 15.7 ( http://infocenter.sybase.com/help/index.jsp?topic=/com.sybase.infocenter.dc36272.1572/html/commands/X30305.htm) состояния для выполнения команды:
строка является литеральной строкой, содержащей часть команды Transact-SQL для выполнения. Нет ограничений на количество символов, поставляемых с литеральной строкой.
Однако иногда система поверх Sybase (например, Kondor+, продукт для финансовых рынков использует ASE 15.x в качестве DB) может устанавливать ограничения. В этом Kondor + не возможно использовать
exec( @SQLQuery)
в его так называемом OpenReport (хранимая процедура), если переменная @SQLQuery превышает 256 символов.
Для более старых ASE вы можете использовать этот обходной путь:
Есть хранимая процедура sp_remotesql. Вы также можете использовать его для выполнения запросов на локальном сервере, вам просто нужно подключить локальный сервер к серверам:
sp_addserver local, NULL, <servername>
куда <servername>
это имя локального сервера (из sql.ini).
Вы можете добавить ярлык для запуска sql:
create procedure sp_exec_dynsql @p_cmd varchar(255)
as
begin
exec sp_remotesql "local", @p_cmd
end
К сожалению, вы ограничены 255 символами в вашем sql.