|
|
|
Динамические переменные
|
|||
|---|---|---|---|
|
#18+
Привет всем. Знатоки-нужна помощь. Задача - перед добавлением столбца в таблицу, проверить его наличие. Данный запрос работает. declare @string varchar(500), @column_name varchar(200) set @column_name = (select name from syscolumns where name = 'rowguid' and id = (select object_id ('[pubs]..[t1]'))) print @column_name возвращает 'rowguid'. Проблема когда нужно передать базу и таблицу как переменные. declare @string varchar(500), @column_name varchar(200), @db varchar(50), @table varchar(50) set @db = 'pubs' set @table = 't1' set @string = 'declare @column_name varchar(200) ' + 'set @column_name = (select name from syscolumns where name = ''rowguid'' and id =' + '(select object_id (''[' + @db + ']..[' + @table + ']'')))' execute (@string) print @column_name возвращает 'NULL'. Если вставлять переменные в сам запрос(where name = 'rowguid' and id = @varible), жалуется на другие errors. Как с этим бороться? SQL Server 2000, SP2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.09.2002, 13:18:43 |
|
||
|
Динамические переменные
|
|||
|---|---|---|---|
|
#18+
1. exec и sp_executesql всегда выполняются как отдельный пакет(batch). Поэтому переменные даже с одинаковыми именами есть разные переменные. Можно делать так Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 2. Для проверки наличия столбца в таблице можго использовать Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.09.2002, 15:34:26 |
|
||
|
|

start [/forum/topic.php?fid=46&tid=1820686]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
72ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
28ms |
get tp. blocked users: |
2ms |
| others: | 246ms |
| total: | 390ms |

| 0 / 0 |
