Перечислить транзакции SQL столбцы - PullRequest
0 голосов
/ 17 ноября 2010

Кто-нибудь знает, как использовать Transact SQL для перечисления типов столбцов в наборе результатов Transact SQL? Я хочу сделать что-то вроде этого (псевдокод):

for each column in (select * from table1 where id=uniquekey)
{
if (column.type=uniqueidentifier){
insert into #table2(id) values (column.value)
}}
then do some stuff with #table2

Но мне нужно сделать это из транзакций sql, и я заранее не знаю, какой будет структура table1. Кто-нибудь знает как? Я использую MS SQL 2005. В двух словах, я хочу, чтобы все значения uniqueidentifier для конкретной записи в table1 записывались в # table2. Спасибо!

Ответы [ 2 ]

3 голосов
/ 17 ноября 2010

Ну, нет простого способа сделать это.Вот немного уродливый код, который делает то, что вам нужно.Он в основном принимает неизвестный входной запрос, создает таблицу в базе данных tempdb, перечисляет столбцы guid и выводит их в таблицу временных таблиц # guids.

3 голосов
/ 17 ноября 2010

Предупреждение, не проверено:

Create Table #Cols(ColName SysName)
Declare @More Bit
Declare CCol Cursor Local Fast_Forward For Select Column_Name From Information_Schema.Columns Where Table_Name = 'Table1' And Data_Type = 'UniqueIdentifier'
Declare @CCol SysName
Declare @SQL National Character Varying(4000)

Set @More = 1
Open CCol

While (@More = 1)
Begin
  Fetch Next From CCol Into @CCol
  If (@@Fetch_Status != 0)
    Set @More = 0
  Else
  Begin
    Set @SQL = N'Insert Into #Table2(ID) Select [' + @CCol + N'] From Table1'
    Execute (@SQL)
  End
End

Close CCol
Deallocate CCol

...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...