簡體   English   中英

Oracle SQL插入白色案例選擇

[英]Oracle SQL Insert whit Case Select

我是這個網站的新手,還有另一個問題。 在這種情況下,它來自Oracle SQL,帶有CASE的Insert操作。
我的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)

如果value為'TIV',則在該位置插入3,否則在該字段中插入2。
謝謝!!

有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個ROW。 查看更多: >>這里<<

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM