Здравствуйте, Elena_, Вы писали:
yus>>Здравствуйте!
yus>> Подскажите, пожалуйста, как составить динамический SQL запрос в MS SQL.
yus>> Вот я в хранимой процедуре хочу выполнить запрос которой содержиться в переменной типа стринг.
yus>>Я как-то делал такое в Oracle, но уже забыл...
yus>> там что-то кажется с immediate связано
yus>> Заранее благодарен!
E_>Например:
E_>DECLARE @sSQL varchar(8000), @sCr char(1)
E_>SET @sCR = char(13)
E_>SET @sSQL = 'IF EXISTS (SELECT * FROM sysobjects' + @sCr +
E_> 'WHERE name = ''' + @namUsp + ''' AND ' +
E_> 'type = ''P'' AND ' +
E_> 'uid = ' + CONVERT(varchar(100), USER_ID()) + ')' + @sCr +
E_> 'DROP PROC ' + USER_NAME () + '.' + @namUsp
E_>EXECUTE (@sSQL)
E_>Если 8000 мало, то
E_>EXECUTE (@sSQL1 + @sSQL2) и т.д.
E_>Намного проще, чем в Oracle
Пример динамического SQL запроса в Оракле
DECLARE
sql_stmt VARCHAR2(200);
emp_id NUMBER(4) := 7566;
emp_rec emp%ROWTYPE;
BEGIN
sql_stmt := 'SELECT * FROM emp WHERE empno = :id';
EXECUTE IMMEDIATE sql_stmt INTO emp_rec USING emp_id;
END;
Может Прекрасная Елена_ скажет чем он сложнее запроса в MSSQL?