繁体   English   中英

INSERT INTO表将触发器生成的主键从SQL Server链接服务器返回到Oracle(11g)

[英]INSERT INTO table RETURNING trigger-generated primary key from SQL Server linked server to Oracle (11g)

方案:从SQL Server链接服务器向Oracle调用INSERT INTO时,获取触发器生成的主键

给定

  1. 具有列PRIMARY_KEY_ID,FIELD1,FIELD2和CREATE_DATE的Oracle 11g表。 表具有“ BEFORE INSERT”触发器,该触发器从序列中选择NEXTVAL到PRIMARY_KEY_ID字段中。

  2. 带有链接服务器的SQL Server 2008 R2到包含上表的Oracle数据库。

当我在Oracle表中插入记录时,我想检索触发器生成的主键。

我该怎么做呢?

  1. 确保在SQL Server链接服务器上设置了以下属性:
    • RPC =真
    • RPC输出=真
  2. 在SQL Server中执行以下代码:

     DECLARE @Field1 NVARCHAR(42); DECLARE @Field2 NVARCHAR(42); DECLARE @PrimaryKeyValue INT; EXECUTE ( 'begin INSERT INTO MYSCHEMA.MYTABLE ( FIELD1 ,FIELD2 ,CREATE_DATE ) VALUES ( ? ,? ,sysdate ) RETURNING PRIMARY_KEY_ID INTO :PrimaryKeyValue; end;' ,@Field1 ,@Field2 ,@PrimaryKeyValue OUTPUT ) at oracle_linked_server; 

笔记

  1. 开始结束; 声明中必填。
  2. SQL Server中声明的@PrimaryKeyValue变量与:PrimaryKeyValue输出参数相同。 Oracle使用冒号前缀作为参数。
  3. 请参阅使用SQL Server的输出参数调用Oracle存储过程 ,它提供了此答案的灵感。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM