반응형
Oracle: 방금 삽입한 행의 시퀀스 번호를 가져오려면 어떻게 해야 합니까?
방금 삽입한 행의 시퀀스 번호를 어떻게 얻을 수 있습니까?
삽입...돌아오는.
declare
s2 number;
begin
insert into seqtest2(x) values ('aaa') returning seq into s2;
dbms_output.put_line(s2);
end;
여기서 "seq"는 변수 s2에 값을 저장할 열의 이름을 나타냅니다.
파이썬:
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())
편집: Mark Harrison이 지적했듯이, 삽입된 레코드의 ID가 생성되는 방법을 사용자가 제어할 수 있다고 가정합니다.만약 당신이 그것에 대한 모든 통제와 책임을 가지고 있다면, 이것은 효과가 있을 것입니다...
저장 프로시저를 사용하여 삽입을 수행하고 ID를 반환합니다.
예: ID가 있는 이름 테이블의 경우:
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;
ORM 계층을 사용하지 않는 경우에도 CRUD 작업에 저장 프로시저를 사용하는 것이 좋습니다. ORM 계층을 사용하면 코드가 데이터베이스에 구애받지 않고 주입 공격 등을 방지할 수 있습니다.
테이블 "testtable"에 PK로 "ID" 열이 있고 "testname" 필드가 varchar 필드라는 점을 고려하여 C#으로 답변합니다.
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);
}
}
}
언급URL : https://stackoverflow.com/questions/361304/oracle-how-do-i-get-the-sequence-number-of-the-row-just-inserted
반응형
'programing' 카테고리의 다른 글
레일 마이그레이션을 사용하여 열을 내리는 방법 (0) | 2023.06.15 |
---|---|
TypeScript로 check i18n 사전을 타이핑하는 방법은 무엇입니까? (0) | 2023.06.15 |
iPad/iPhone에서 CSS 제출 버튼 이상한 렌더링 (0) | 2023.06.15 |
UIImagePickerController 오류: 렌더링되지 않은 보기를 스냅샷하면 iOS 7에서 스냅샷이 비어 있습니다. (0) | 2023.06.15 |
jQuery에서 선택한 모든 확인란 값을 가져오는 가장 좋은 방법 (0) | 2023.06.15 |