2014-02-27 53 views
0

我是這個站點中的新成員,並且還有其他問題。在這種情況下,它來自Oracle SQL,使用CASE插入操作。
我的SQL插入的代碼是:Oracle SQL插入白盒案例選擇

INSERT WHEN (SELECT TB0083_DS_TIPODISPOSITIVO FROM TB0083_TIPODISPOSITIVO WHERE TB0083_ID_TIPODISPOSITIVO = (SELECT FOR_DISPOSITIVO FROM TFORPD01 WHERE FOR_CODIGO = &FORNECEDOR))='TIV' THEN 
INTO TTRAPD01 (TRA_CODIGO,TRA_CODBARRA,TRA_CODLOC,TRA_CODCON,TRA_DATLOC,TRA_CODCAIXA,TRA_STATCOND,TRA_DT_CRIACAO,TRA_NM_USUARIOCRIACAO,TRA_DT_ALTERACAO,TRA_NM_USUARIOALTERACAO,TRA_CD_CONTA,TRA_CODCTR,TRA_TRANSACAO_ONLINE,TRA_TIV_HEXA,TRA_TIV_BINARIO,TRA_CD_DISPOSITIVO,TRA_DATSINC,TRA_ID_TPSEGREG,TRA_FORNECEDOR,TRA_STATUS) 
VALUES (&NUMEROIDENTIFICADOR,&CODIGOBARRAIDENTIFICADOR,&CODIGOPONTOVENDALARM,259,SYSDATE,&CODIGOCAIXA,0,SYSDATE,&USUARIOLOGUEADO,SYSDATE,&USUARIOLOGUEADO,422,1,0,&TIVHEXA,&TIVBINARIO,423,SYSDATE,3,&FORNECEDOR,1) 
ELSE 
INTO TTRAPD01 (TRA_CODIGO,TRA_CODBARRA,TRA_CODLOC,TRA_CODCON,TRA_DATLOC,TRA_CODCAIXA,TRA_STATCOND,TRA_DT_CRIACAO,TRA_NM_USUARIOCRIACAO,TRA_DT_ALTERACAO,TRA_NM_USUARIOALTERACAO,TRA_CD_CONTA,TRA_CODCTR,TRA_TRANSACAO_ONLINE,TRA_TIV_HEXA,TRA_TIV_BINARIO,TRA_CD_DISPOSITIVO,TRA_DATSINC,TRA_ID_TPSEGREG,TRA_FORNECEDOR,TRA_STATUS) 
VALUES (&NUMEROIDENTIFICADOR,&CODIGOBARRAIDENTIFICADOR,&CODIGOPONTOVENDALARM,259,SYSDATE,&CODIGOCAIXA,0,SYSDATE,&USUARIOLOGUEADO,SYSDATE,&USUARIOLOGUEADO,422,1,0,&TIVHEXA,&TIVBINARIO,423,SYSDATE,2,&FORNECEDOR,1); 

此腳本沒有找到。
我需要修復它,因爲我需要改變字段的值TRA_ID_TPSEGREG取決於價值:

SELECT TB0083_DS_TIPODISPOSITIVO FROM TB0083_TIPODISPOSITIVO WHERE TB0083_ID_TIPODISPOSITIVO = (SELECT FOR_DISPOSITIVO FROM TFORPD01 WHERE FOR_CODIGO = &FORNECEDOR) 

如果值是「TIV」然後在該位置插入3,否則它插入2在這些領域。
謝謝!

+0

你想做什麼?我無法理解SQL代碼。這與正確的語法相去甚遠。 –

回答

0

有PL/SQL INSERT WHEN命令:

試試這個:

INSERT FIRST 
    WHEN TB0083_DS_TIPODISPOSITIVO = 'TIV' THEN 
      INTO TTRAPD01 
       (
        <COLUMN_NAME1>,<COLUMN_NAME2>...... 
       ) 
       VALUES 
       (
        <COLUMN_VALUE1>,<COLUMN_VALUE2>..... 
       ) 
    ELSE 
      INTO TTRAPD01 
       (
        <COLUMN_NAME1>,<COLUMN_NAME2>...... 
       ) 
       VALUES 
       (
        <COLUMN_VALUE1>,<COLUMN_VALUE2>..... 
       ) 
SELECT TB0083_DS_TIPODISPOSITIVO 
      FROM TB0083_TIPODISPOSITIVO 
      WHERE TB0083_ID_TIPODISPOSITIVO = 
       (SELECT FOR_DISPOSITIVO FROM TFORPD01 WHERE FOR_CODIGO = &FORNECEDOR 
       ); 

對於如:

CREATE TABLE TEST (ID NUMBER); 
INSERT FIRST 
    WHEN dummy = 'Y' THEN 
     INTO TEST 
     VALUES(222) 
    ELSE 
     INTO TEST 
     VALUES(555) 
select dummy from dual; 

上面的查詢將插入1行的第一個條件滿足。查看更多:>>here<<