Модераторы: gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> добавление столбца в таблицу с помощью SQL CLR 
:(
    Опции темы
0rac1e
Дата 24.8.2010, 13:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 16.2.2007

Репутация: нет
Всего: нет



Подскажите возможно ли создавать столбцы в таблице при помощи процедуры написанной на SQL CLR.

Код

[Microsoft.SqlServer.Server.SqlProcedure]
    public static void createIDandDate(string table_name)
    {
        SqlConnection conn = new SqlConnection("context connection=true");
        SqlCommand comm = conn.CreateCommand();

        conn.Open();
        string sql = @" ALTER TABLE [dbo].[@table_name]
                        ADD [id] int IDENTITY(1, 1) NOT NULL;

                        ALTER TABLE [dbo].[@table_name]
                        ADD CONSTRAINT [@table_name_uq] UNIQUE ([id]);                   

                        ALTER TABLE [dbo].[@table_name]
                        ADD [дата_сканирования] date DEFAULT getdate() NOT NULL;
                        ";
        comm.CommandText = sql.Replace("@table_name", table_name.ToString());
        comm.ExecuteReader();

        conn.Close();
    }


Пробовал такой вариант, но никакого эффекта. Если запускать аналогичный код C#, как простое приложение, работает без проблем.
PM MAIL   Вверх
kobra
Дата 24.8.2010, 16:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 730
Регистрация: 15.6.2005
Где: Грузия, Тбилиси

Репутация: 1
Всего: 9



Код

comm.ExecuteNonQuery()

PM MAIL   Вверх
jonie
Дата 24.8.2010, 18:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 5613
Регистрация: 21.8.2005
Где: Владимир

Репутация: 8
Всего: 118



0rac1e, в общем так:
Код

        using (SqlConnection conn = new SqlConnection("context connection=true")) // (!)
        {
            SqlCommand comm = conn.CreateCommand();
            conn.Open();
            string sql = @" ALTER TABLE [dbo].[@table_name]
                        ADD [id] int IDENTITY(1, 1) NOT NULL;
                        ALTER TABLE [dbo].[@table_name]
                        ADD CONSTRAINT [@table_name_uq] UNIQUE ([id]);                   
                        ALTER TABLE [dbo].[@table_name]
                        ADD [дата_сканирования] date DEFAULT getdate() NOT NULL;
                        ";
            comm.CommandType = CommandType.Text;
            comm.CommandText = sql.Replace("@table_name", "r1");
            comm.ExecuteNonQuery();
        }



--------------------
Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет...
PM MAIL Jabber   Вверх
0rac1e
Дата 26.8.2010, 06:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 16.2.2007

Репутация: нет
Всего: нет



Код

comm.ExecuteNonQuery();

тоже использовал.

Код

comm.ExecuteReader();

Это я потом добавил, решил проверить вдруг сработает.

Вся проблема в том, что при запуске, как приложение - этот код работает нормально.
Но если запускать его, как процедуру, то нет никакой реакции.

Это сообщение отредактировал(а) 0rac1e - 26.8.2010, 06:53
PM MAIL   Вверх
jonie
Дата 26.8.2010, 23:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 5613
Регистрация: 21.8.2005
Где: Владимир

Репутация: 8
Всего: 118



0rac1e, мой код успешно работает как хранимка.


--------------------
Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет...
PM MAIL Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
stab
mr.DUDA
Exception

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, stab, mr.DUDA, Exception.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Базы данных под .NET | Следующая тема »


 




[ Время генерации скрипта: 0.0673 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.