2014-09-26 3 views
1

Я очень новичок в SQL. Более знакомы с процедурным программированиемВставить несколько строк вместе со статическими значениями

В настоящее время у меня есть локальные переменные, такие как имена, которые меняются внутри цикла. Однако я также выполняю функцию, которая возвращает много строк. Прямо сейчас я просматриваю каждую строку, чтобы вставить значения в таблицу результатов.

Как поместить дату в таблицу со значениями (имя, cname, val1, val2) , когда у меня есть несколько строк?

пример случай:

set @name = 'test' 
select cname, val1, val2 from myfunc(@name) 

возвращается:

----------------------- 
| cname | val1 | val2 | 
------------------------ 
|'atest'| 1.3 | 42.0 | 
|'btest'| 1.58 | 6.87 | 
------------------------ 

, и я хотел бы таблица результатов (@restable) быть:

----------------------------- 
name | cname | val1 | val2 | 
----------------------------- 
'test'|'atest'| 1.3 | 42.0 | 
'test'|'btest'| 1.58 | 6.87 | 
------------------------------ 

Примечание мне еще нужно @restable для получения дополнительных инструкций после этой операции.

+2

'выберите @name CNAME, val1, val2 из myfunc (@name) ' – Tom

+1

Если вы обнаружите, что используете циклы в SQL, вы, вероятно, ошибаетесь. Циклы естественны, когда вы привыкли к процедурному программированию, но с SQL вы получите гораздо лучшую производительность, если сможете научить себя думать в наборах. Это непросто, но на самом простом уровне вы можете думать об этом как диаграммы venn наборов данных. –

ответ

2
declare @t table(cname varchar(10),val1 decimal(10,2),val2 decimal(10,2)) 
insert into @t (cname,val1,val2) values ('atest',1.3,42.0) 
insert into @t (cname,val1,val2) values ('btest',1.58,6.87) 
select * from @t 

declare @tt table(name varchar(10), cname varchar(10),val1 varchar(10),val2 decimal(10,2)) 
insert into @tt(name,cname,val1,val2) 
select (select 'test')name, cname,val1,val2 from @t 
select * from @tt 
+0

Спасибо! Это ответило на мой вопрос, я провалился, пытаясь вставить, потому что я включил «ценности», но этот пост показывает, что вы можете просто вставить его. – aperture

1

Я знаю, что это работает с таблицей
Не уверен, что функции
Если функция возвращает таблицу, это должно работать

set @name = 'test' 
select @name as [name], cname, val1, val2 from myfunc(@name) 
+0

Привет, Blam. Кажется, это дает правильный результат, но выполнение «вставки в значения @restable», похоже, не вставляет этот набор в таблицу. – aperture

+1

Показать вставку. Потому что я не думаю, что у вас должен быть термин «значения» в этой вставке. – Paparazzi

+0

Вы правы, мне не следовало иметь вставку, и я заметил из сообщения mohan111, что она не была включена. – aperture

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