2014-11-07 4 views
0

мне нужно определить временную таблицу в зависимости от значения параметра, я ставлю этот код:Dynamic Temporal SQL Server 2005 Таблица по ДЕЛУ

CASE @estadoFacturacion 
     WHEN 1 THEN SELECT * INTO #EstadoFacturacion FROM f_lineas_proceso_pendiente(@custCod) --PROCESOS QUE NO TIENEN NINGUNA FACTURA ASOCIADA 
     WHEN 2 THEN SELECT * INTO #EstadoFacturacion FROM f_lineas_proceso_FactParcial(@custCod) --PROCESOS CON, AL MENOS, 1 TRAMO FACTURADO 
     WHEN 3 THEN SELECT * INTO #EstadoFacturacion FROM f_lineas_proceso_AbonoParcial(@custCod) --PROCESOS CON, AL MENOS, 1 TRAMO ABONADO 
     WHEN 4 THEN SELECT * INTO #EstadoFacturacion FROM f_lineas_proceso_Facturada(@custCod) --PROCESOS CON TODOS LOS TRAMOS FACTURADOS 
     WHEN 5 THEN SELECT * INTO #EstadoFacturacion FROM f_lineas_proceso_Abonada(@custCod) --PROCESOS CON TODOS LOS TRAMOS ABONADO 
     ELSE SELECT CONVERT(VARCHAR, LP.fk_proyecto_id) + '-' + CONVERT(VARCHAR,LP.linea) IdProyLinea INTO #EstadoFacturacion FROM lineas_proceso LP --TODOS LOS PROCESOS 

Но это не работает ...

¿Как я могу сделать это?

Спасибо.

+0

CASE не предназначен для управления потоком; его выражение, которое должно вернуть значение; используйте IF/ELSE –

ответ

1

SQL-сервер не имеет CASEзаявления, только CASEвыражения. Таким образом, вместо этого используйте лестницу IF ELSE IF:

IF @estadoFacturacion = 1 
BEGIN 
    SELECT * 
    INTO #EstadoFacturacion 
    FROM f_lineas_proceso_pendiente(@custCod) 
END 
ELSE IF @estadoFacturacion = 2 
BEGIN 
    SELECT * 
    INTO #EstadoFacturacion 
    FROM f_lineas_proceso_FactParcial(@custCod) 
END 
... 
ELSE 
BEGIN 
    SELECT CONVERT(VARCHAR, LP.fk_proyecto_id) + '-' + CONVERT(VARCHAR,LP.linea) Id 
    INTO #EstadoFacturacion 
    FROM lineas_proceso LP 
END 
+0

Это не сработает, верните следующую ошибку 5 раз: в базе уже есть объект с именем «# EastadoFacturacion». – andriuch

+0

Это другой вопрос. Ответ: IF OBJECT_ID ('tempdb .. # EstadoFacturacion') НЕ НУЛЛ BEGIN \t ТАБЛИЦА DROP #EstadoFacturacion END –

+0

Не работает. Когда я пытаюсь скомпилировать сценарий, когда-либо возвращаю эту ошибку. Я пытаюсь поставить ваш последний скрипт раньше IF, и в каждом блоке ELSE IF ... – andriuch

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