Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 sp_executesql  [new]
DyNamicSQL
Guest
Используется система с несколькими базами
@dbname varchar(50) определяется динамически
Процедура Key_Update находится в БД уакзанной в переменной
Как при этом правильно вызвать sp_executesql
Понятно что еdли не задействовать @dbname
То
exec sp_executesql N'exec Key_Update @FieldID,@OID,@PK,@Str,@IO',
N'@FieldID   numeric(20,0),@Oid  numeric(20,0), @PK numeric(20,0),@Str nvarchar(255),@IO numeric(20,0)',
@FieldID=22,@OID=10097233626,@PK=NULL,@Str='20131021',@IO = Null

если задейстовать то
declare 
    @sql      varchar(8000),
    @dbname    varchar(50)
    select @dbname='base1'
    set @sql=N'exec '+@dbname+'.dbo.'+'Key_Update @FieldID,@OID,@PK,@Str,@IO'
    exec sp_executesql @sql,N'@FieldID   numeric(20,0),@Oid  numeric(20,0), @PK numeric(20,0),@Str nvarchar(255),@IO      numeric(20,0)',
@FieldID=22,@OID=10097233626,@PK=NULL,@Str='20131001',@IO = Null
-------возникает ошиььа 
Procedure expects parameter '@statement' of type 'ntext/nchar/nvarchar' из за @dbname

Как в случае испоьзования @dbName корректно вызывать динамику
Спасибо
11 окт 13, 13:20    [14956382]     Ответить | Цитировать Сообщить модератору
 Re: sp_executesql  [new]
Glory
Member

Откуда:
Сообщений: 104751
DyNamicSQL
Как в случае испоьзования @dbName корректно вызывать динамику

1. Прочитать сообщение о ошибке. Выполнить требования к типу параметров

2. Проще делать так
set @proc_name=@dbname+'.dbo.Key_Update'
exec @proc_name @FieldID,@OID,@PK,@Str,@IO
11 окт 13, 13:23    [14956411]     Ответить | Цитировать Сообщить модератору
 Re: sp_executesql  [new]
Гость333
Member

Откуда:
Сообщений: 3683
DyNamicSQL
возникает ошиььа из за @dbname

Нет, ошиььа возникает из-за @sql.
11 окт 13, 13:28    [14956439]     Ответить | Цитировать Сообщить модератору
 Re: sp_executesql  [new]
DyNamicSQL
Guest
Спасибо ответившим !
11 окт 13, 13:38    [14956500]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить