如何獲取剛剛插入的行的序列號?Oracle:我如何獲取剛剛插入的行的序列號?
19
A
回答
28
insert ... returns。
declare
s2 number;
begin
insert into seqtest2(x) values ('aaa') returning seq into s2;
dbms_output.put_line(s2);
end;
「seq」這裏指的是你想要存儲到變量s2中的列的名字。
在python:
myseq=curs.var(cx_Oracle.NUMBER)
curs.prepare("insert into seqtest2(x) values('bbb') returning seq into :x")
curs.execute(None, x=myseq)
print int(myseq.getvalue())
9
編輯:馬克·哈里森指出,這是假定你有過如何建立您的插入記錄的ID控制。如果你有完全控制權,併爲此負責,這應該工作...
使用存儲過程來執行你的插入和返回的ID。
如:用於地名與IDS表:
PROCEDURE insert_name(new_name IN names.name%TYPE,
new_name_id OUT names.id%TYPE)
IS
new_id names.id%TYPE;
BEGIN
SELECT names_sequence.nextVal INTO new_id FROM dual;
INSERT INTO names(id, name) VALUES(new_id, new_name);
new_name_id := new_id;
END;
使用存儲過程的CRUD操作是一個好主意,不管,如果你不使用ORM層,因爲它使你的代碼更數據庫 - 不可知論,有助於防止注入攻擊等。
6
我在C#中的答案,考慮到表「testtable」具有「ID」列作爲具有autoinc序列和字段「testname」的PK是varchar字段。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Oracle.DataAccess.Client;
using System.Data;
namespace ConsoleApplication3
{
class Program
{
public static void Main(string[] args)
{
OracleConnection cn = new OracleConnection("your connection string here");
string sql = "INSERT INTO testtable(testname) VALUES('testing2') RETURNING id INTO :LASTID";
OracleParameter lastId = new OracleParameter(":LASTID", OracleDbType.Int32);
lastId.Direction = ParameterDirection.Output;
using (OracleCommand cmd = new OracleCommand(sql, cn))
{
cn.Open();
cmd.Parameters.Add(lastId);
cmd.ExecuteNonQuery();
Console.WriteLine("Last ID: " + lastId.Value.ToString());
cn.Close();
}
Console.WriteLine();
Console.ReadKey(false);
}
}
}
相關問題
- 1. 如何獲取我剛剛插入的文件的主鍵ID?
- 2. 獲取我剛剛插入的行的標識
- 3. 如何獲取剛剛插入的最新記錄的ID?
- 4. 獲取我剛剛插入的記錄的主鍵
- 5. 獲取行的ID剛剛插入MySQL數據庫
- 6. 如何引用我剛剛插入到MySQL表中的行?
- 7. 如何從我剛執行的MYSQL插入中獲取主ID?
- 8. 選擇剛剛插入的行
- 9. 獲取剛插入MySQL的行的自動編號ID
- 10. 獲取剛剛插入的記錄的ID?
- 11. 找出我剛剛插入的行上的rowindex?
- 12. 如何獲得一排我剛剛插入的PHP的ID/MySQL的
- 13. 如何獲取剛剛添加到DataTable的行的標識?
- 14. Bootstrap Multiselect - 如何獲取我剛剛選擇的值?
- 15. 如何獲取我剛剛解壓縮的文件。 PHP
- 16. 如何獲取我剛剛插入到.net類型數據集中的行的主鍵?
- 17. 獲取剛剛點擊的按鈕的編號
- 18. 當我剛剛調用nextval時,pgsql序列如何定義?
- 19. 如何獲取剛剛點擊的按鈕用戶的ID?
- 20. 如何獲取剛剛上傳的Youtube電影的視頻ID
- 21. SQL服務器:觸發更新剛剛插入的行
- 22. 如何獲取剛插入到mongodb中的文檔?
- 23. 獲取剛剛添加的行的最佳方法。 Heroku + Node + Postgres
- 24. Python Selenium獲取剛剛輸入的元素變量
- 25. 如何爲剛剛創建的用戶獲取uId
- 26. 剛剛閉幕插座
- 27. YouTube數據API - 如何獲取我剛剛上傳的視頻的網址?
- 28. 無法從我剛剛寫入的文件中讀取ReadFile
- 29. 如何獲得剛剛在PHP中輸入的行的自動增量主鍵?
- 30. WM_SETFOCUS,獲取剛剛失去焦點的應用程序