需要向 Oracle 發送一個 SQL 字串,首先在同一張表上“選擇”然后“插入”。db 中的代碼超出了我的控制范圍,所以必須像這樣。由于應用程式的結構,我不能先呼叫“select”,獲取新 ID 然后插入,它們必須在同一個 SQL 字串中。想做類似以下但不知道如何使用,甚至Oracle有這樣的變數。已檢查此鏈接,但情況不同。
var newid number;
SELECT max(id) 1 into :newid FROM usr;
INSERT INTO usr(id, name) VALUES (:newid, 'new-name');
uj5u.com熱心網友回復:
(請注意,max(id) 1用于生成密鑰在多用戶環境中不起作用。您真的想使用序列)。
聽起來你只是想要
INSERT INTO usr(id, name)
SELECT max(id) 1, 'new-name'
FROM usr;
您也可以向資料庫傳遞一個匿名 PL/SQL 塊,盡管這樣效率會降低。如果你的前端只希望得到 SQL,它可能不支持傳入 PL/SQL。
DECLARE
l_newID usr.id%type;
BEGIN
SELECT max(id) 1
INTO l_newID
FROM usr;
INSERT INTO usr( id, name )
VALUES( l_newID, 'new-name' );
END;
uj5u.com熱心網友回復:
你可以做
INSERT INTO usr(id, name) SELECT max(id) 1, 'new-name' FROM
usr;
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/466317.html
