Три вопроса CTE - PullRequest
       4

Три вопроса CTE

1 голос
/ 10 сентября 2011

Я надеялся сделать что-то вроде этого:

WITH Hello (Name)
AS (
INSERT INTO MyTest
OUTPUT 
  inserted.Name
VALUES ('George')
)
SELECT * FROM Hello

Короче говоря, я надеялся, что выход просто станет входом CTE.Есть ли способ исправить это?

Еще два вопроса:

  1. Есть ли способ создать пустой CTE?
  2. Можно ли изменить CTE?Могу ли я вставить строки после его создания?

ОБНОВЛЕНИЕ Я нашел ответ на свой основной вопрос, намереваясь заполнить CTE произвольными данными:

;WITH stuff AS (
  SELECT * FROM ( VALUES
   (123, 1),
   (234, 1),
   (345, 0)
  ) [X](id, pref)
)
SELECT * FROM stuff

1 Ответ

2 голосов
/ 10 сентября 2011

два других вопроса

1)

WITH Hello 
AS (
select  name
from sysobjects where 1 =0
)
SELECT * FROM Hello --no rows

2)

-- ***  update  ***

create table testNow(id int)
insert testNow values(1)

;WITH Hello 
AS (select id from testNow)

update Hello set id = 2 -- update cte

SELECT * FROM testNow --table now has value 2

-- ***  insert   ***

;WITH Hello 
AS (
select id from testNow

)

insert Hello values( 3 )

SELECT * FROM testNow --table now has 2 rows
...