正如@a_horse_with_no_name所述,您無法以該方式使用IF/THEN語句。這是通過PL/SQL實現的,在你的情況下可能是一個Procedure。 現在我想要說明這一點,因爲我並不擅長使用PL/SQL,但這是我想出來的,你可以給予一個機會。
它與您的示例非常相似,但我已填充'?'與我假設是你想要的。它應該是可讀的,但該過程被調用參數 ,它執行您在with語句中執行的檢查。根據該結果填充「總計」變量和IF/THEN更新的列數。
下面是您要運行它的過程和命令。有經驗的人:隨時提出改進建議,因爲這對我來說也是一個學習方面。
CREATE OR REPLACE
PROCEDURE updateUser(
param_name VARCHAR2,
param_modifiedDate DATE,
param_registrationDate DATE,
param_userId NUMBER)
AS
total NUMBER;
BEGIN
SELECT
COUNT(userid)
INTO
total
FROM
USER
WHERE
userid = param_userId
AND registrationdate IS NULL;
IF total = 0 THEN
UPDATE
USER
SET
name = param_name,
modifieddate = param_modifiedDate
WHERE
userid = param_userId;
ELSE
UPDATE
manageduser
SET
name = param_name,
modifieddate = param_modifiedDate,
registrationdate = param_registrationDate
WHERE
userid = param_userId;
END IF;
END;
執行與:
EXECUTE updateuser('MyName', to_date('2014/07/17', 'yyyy/MM/dd'), to_date('2014/07/17', 'yyyy/MM/dd'), 1234)
您不能使用SQL語句中的'IF'聲明。 'IF'只是PL/SQL,而不是SQL。 –