Имя: Пароль:
IT
Админ
Не могу укротить ЕXEC T-SQL
0 dwarfadelic
 
16.09.15
13:58
Пробую так

SET @sql = 'SELECT @rcount = count(*) FROM '+@dbname+'.dbo.'+@TBL+' WHERE '+@COL+' = '''+ @VAL1+''''
SET @rescount = execute(@sql)

Орет Incorrect syntax near the keyword 'execute'

Пробуешь так
@rescount = SELECT count(*) FROM @TBL WHERE @COL = @VAL1
или так

SELECT @rescount = count(*) FROM @TBL WHERE @COL = @VAL1

@TBL взята из запроса
SET @CURSOR_TABLES  = CURSOR SCROLL FOR SELECT TABLE_NAME
                            FROM          TFlexDOCs2012_for_test.INFORMATION_SCHEMA.TABLES
FETCH NEXT FROM @CURSOR_TABLES  INTO @TBL
Орет  Must declare the table variable "@TBL".
1 ДенисЧ
 
16.09.15
13:59
execute_sql
2 dwarfadelic
 
16.09.15
14:08
exec sp_execute_sql @sql

орет
Сообщение 2812, уровень 16, состояние 62, строка 41
Could not find stored procedure 'sp_execute_sql'.
3 ДенисЧ
 
16.09.15
14:10
sp_executesql
4 dwarfadelic
 
16.09.15
14:57
SET @sql = N'SELECT @rcount = count(*) FROM '+@dbname+'.dbo.['+@TBL+'] WHERE ['+@COL+'] Like ''%'+ @SRCH+'%'''
            IF @DBG='true'
            BEGIN
                PRINT @sql
            END

            SET @rescount = 0;
            EXECUTE sp_executesql @sql, N'@rcount int OUTPUT', @rcount=@rescount
            IF @rescount>0
            BEGIN
                PRINT 'Найдено в '+@TBL
            END

Почему-то не меняется значение переменной @rescount . Хотя запрос вроде выдает в одном из случаев
5 ДенисЧ
 
16.09.15
14:59
а почему оно должно присваиваться?
так попробуй

SET @sql = N'SELECT count(*) FROM '+@dbname+'.dbo.['+@TBL+'] WHERE ['+@COL+'] Like ''%'+ @SRCH+'%'''
6 dwarfadelic
 
16.09.15
15:04
Но мыже пишем @rcount = count(*) и EXECUTE sp_executesql @sql, N'@rcount int OUTPUT', @rcount=@rescount это значит мы говорим этой хранимой процедуре. Как мне передать OUTPUT ?
7 dwarfadelic
 
16.09.15
15:10
Все понял - EXECUTE sp_executesql @sql, N'@rcount int OUTPUT',@rcount = @rescount OUTPUT