如何获取刚刚插入的行的序列号?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. Mysql获取刚刚插入的行
- 2. 如何获取我刚刚插入的文件的主键ID?
- 3. 获取我刚刚插入的行的标识
- 4. 如何获取刚刚插入的最新记录的ID?
- 5. 获取我刚刚插入的记录的主键
- 6. 如何获取刚刚插入的记录标识(mysql)?
- 7. 获取行的ID刚刚插入MySQL数据库
- 8. SQL Server存储过程从刚刚插入的行获取值
- 9. SQLSERVER + PHP:获取刚刚插入的行ID
- 10. 如何引用我刚刚插入到MySQL表中的行?
- 11. 如何从我刚执行的MYSQL插入中获取主ID?
- 12. 如何获取行的ID我刚插入Java中
- 13. 选择刚刚插入的行
- 14. 获取刚插入MySQL的行的自动编号ID
- 15. 获取刚刚插入的记录的ID?
- 16. 根据updated_timestamp获取刚刚插入/修改的记录
- 17. 获取刚刚插入到web.py中的记录
- 18. 找出我刚刚插入的行上的rowindex?
- 19. 如何将值插入我刚刚选择的值?
- 20. 如何获得一排我刚刚插入的PHP的ID/MySQL的
- 21. 如何获取刚刚添加到DataTable的行的标识?
- 22. 获取的ID从表行我刚插入
- 23. 我如何在刚刚更新的Rails中获取记录?
- 24. Bootstrap Multiselect - 如何获取我刚刚选择的值?
- 25. 如何获取我刚刚解压缩的文件。 PHP
- 26. 刚刚插入一行后获取主键或任何其他属性
- 27. 如何获取我刚刚插入到.net类型数据集中的行的主键?
- 28. 获取刚刚点击的按钮的编号
- 29. 如何存储一个引用刚刚插入的div
- 30. 当我刚刚调用nextval时,pgsql序列如何定义?