|
Не могу укротить Е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
|
|