Эквивалентно sp_executesql в Sybase

Что эквивалентно sp_executesql Sql Server в sybase.

3 ответа

Решение

@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.

Другие вопросы по тегам