sql >> Base de Datos >  >> RDS >> Oracle

Ejecute el procedimiento almacenado de SQL Server a través del enlace de base de datos de Oracle

En realidad, es posible llamar a funciones o procedimientos almacenados a través de dg4odbc. Probé Puerta de enlace de base de datos para MS SQL Server , y de todos modos no fue compatible con la tabla de Sql Server/funciones con valores escalares de forma nativa. Ambos necesitan confiar en DBMS_HS_PASTHROUGH.EXECUTE_IMMEDIATE para esta funcionalidad. Necesitábamos recuperar la identificación de las filas insertadas:

DECLARE
  RESULT NUMBER(8,2);
  val  INTEGER;
  c    INTEGER;
  nr   INTEGER;
BEGIN

  RESULT := [email protected]('select SCOPE_IDENTITY();');
  c := [email protected]; 
  [email protected](c, 'select @@IDENTITY');
  LOOP
    nr := [email protected](c);
    EXIT WHEN nr = 0;
    [email protected](c, 1, val);
  END LOOP;  
  [email protected](c); 
  DBMS_OUTPUT.PUT_LINE('retrieved: ' || val);
END;