2013-02-27 4 views
-1

Предположим, что я копирую значения одной таблицы в другую таблицу.Добавить @var в SQL Вставить в ... значения (SELECT ... [здесь] FROM ...)

INSERT INTO T1(field_list) VALUES(SELECT field_list FROM T2)

И вместо того, чтобы вставить один столбец второй таблицы я обеспечиваю переменную. Это было бы как

INSERT INTO T1(field_list) VALUES (SELECT field_list, @variable FROM T2)

Принимая во внимание, что нет никакой ошибки с подсчета столбцов и вместо того, чтобы обеспечить некоторый статический текст я обеспечиваю имя переменной.

Если я изменяю @variable на некоторый статический текст, он работает, но не @variable.

Как обеспечить @вариабель в этом случае?

+0

Что вы имеете в виду это не работает? Получаете ли вы ошибку или встаете неверные данные? – cjk

+0

У вас не должно возникнуть никаких проблем с этим, сообщите точное сообщение об ошибке, с которым вы сталкиваетесь. –

+0

поле, которое я вставляю, является NULL !! –

ответ

0

Вы должны сначала объявить @variable

DECLARE @variable varchar(255) 
SET @variable = 'myColumn' 
EXECUTE (' SELECT *, ' + @variable + ' FROM myTable') 
+0

моя переменная была объявлена! –

0
INSERT INTO T1(field_list) 
SELECT field_list, @variable FROM T2 

Он должен работать без каких-либо вопроса, если вы таблица не позволяет утратившим у вас есть такое же количество значений, которые будут вставлены, как определено много столбцов вставить в оператор.

Как вы сказали, переменная объявлена, это не должно быть проблемой.

EDIT:

@variable может быть динамический текст, который вы передаете от переднего конца или статического текста, назначенного переменной в вашем SP. Он должен работать во всех случаях.

INSERT INTO T1 (field1, field2) ВЫБРАТЬ field2, @variable FROM T2

+0

сделал это! проблема была функция не возвращалась хеш! Когда я изменил @var на какой-то статический текст, он сработал! –

Смежные вопросы