|
|
|
Названия таблицы и столбцов в качестве параметров
|
|||
|---|---|---|---|
|
#18+
Можно ли средствами MsSql сделать следующую вещь: У меня над несколькими таблицами должна производится однотипная операция. Меняется только название таблицы и нескольктй полей, а логика остается. Можно ли как-то использовать названия таблиц и полей в качестве параметров? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.10.2002, 15:21:48 |
|
||
|
Названия таблицы и столбцов в качестве параметров
|
|||
|---|---|---|---|
|
#18+
Думаю здесь нужно динамически генерить скрипт и выполнять его. Писал тут такую вещь. Может сгодится. /******************************************************************************** * скрипт ищет поля во всех таблицах базы, содержащие заданное значение * ********************************************************************************/ use sql1c --если здесь выбрать другую базу, то поиск будет осуществляться в ней declare allColumns cursor local forward_only read_only for select so.name,sc.name from sysobjects so join syscolumns sc on so.id=sc.id where so.xtype='U ' and so.name like 'sc%' order by so.name -- sc% - маска проверяемых таблиц, -- т.е. в данном случае поиск осуществляется только в таблицах с названиями, начинающимися с 'sc' declare @tableName sysname, @columnName sysname, @searchValue varchar(100) set @searchValue='291L' --здесь собственно вводится искомое значение (можно использовать маску) open allColumns while 0=0 begin fetch next from allColumns into @tableName, @columnName if @@fetch_status<0 break exec(N'declare @rows int select @rows=isnull(count(*),0) from ' + @tableName + ' where ' + @columnName + ' like '''+ @searchvalue + ''' if @rows>0 begin ' + ' print ' + ''''+ @tablename +''' + '' '' + ''' + @columnname +''' select * from ' + @tableName + ' where ' + @columnName + ' like '''+ @searchvalue +''' end ') end ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.10.2002, 15:34:28 |
|
||
|
Названия таблицы и столбцов в качестве параметров
|
|||
|---|---|---|---|
|
#18+
Можно, например: Код: plaintext 1. 2. 3. 4. 5. Однако, я бы не советовал пользоваться динамическими запросами без крайней нужды. Динамический запрос это новая сессия. Динамические запросы будут каждый раз проверятся на синтаксис и компилироваться, в отличии от статических с которыми это происходит один раз при первом запуске. При ошибке синтаксиса в динамическом запросе, прерывается выполнение всех следующих операторов. При динамическом запросе надо давать разрешения пользователю на работу с таблицами напрямую. Поэтому могу посоветовать написать несколько процедур, при похожей логике достаточно написать руками одну а остальные скопировать и поправить названия таблиц и полей, т.е времени затратите не много. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.10.2002, 15:44:56 |
|
||
|
|

start [/forum/topic.php?fid=46&msg=32063195&tid=1819210]: |
0ms |
get settings: |
7ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
31ms |
get topic data: |
9ms |
get forum data: |
3ms |
get page messages: |
36ms |
get tp. blocked users: |
1ms |
| others: | 198ms |
| total: | 306ms |

| 0 / 0 |
