Oracle
 sql >> Baza danych >  >> RDS >> Oracle

wykonał procedurę składowaną Oracle z serwera sql przy użyciu funkcji otwartego zapytania

W końcu wyśledziliśmy kilka rozwiązań – kluczem do problemu (dla nas) jest to, że domyślnie RPC są wyłączone dla serwerów połączonych. Parametry Rpc, Rpc Out i Use Remote Collation muszą być ustawione na true. Więcej informacji:

http://blog.sqlauthority.com/2007/10/18/sql-server-2005-fix-error-msg-7411-level-16-state- 1-serwer-nie-skonfigurowany-dla-rpc/

Zastosowane rozwiązanie będzie zależeć od wymagań wyjściowych procedury. Pierwszy przykład zwraca wartość wyjściową. W drugim przykładzie nie są zwracane żadne wartości wyjściowe (dane są zbierane w kolejnym zapytaniu).

Przykład 1

Procedura T2T_collect_all ma dwa parametry wejściowe (daty rozpoczęcia i zakończenia) i jeden parametr wyjściowy (liczba wierszy).

DECLARE @l_i_parameter1 varchar(10)

DECLARE @l_i_parameter2 varchar(10)

DECLARE @l_i_parameter3 varchar(10)

DECLARE @l_i_parameter4 varchar(10)

DECLARE @l_o_parameter1 liczba całkowita

SET @l_i_parameter1 ='2009/10/01'

SET @l_i_parameter2 ='rrrr/mm/dd'

SET @l_i_parameter3 ='2009/12/31'

SET @l_i_parameter4 ='rrrr/mm/dd'

USTAW @l_o_parametr1 =0

WYKONAJ ( 'begin T2T_collect_all(do_date(?, ?), to_date(?, ?), ? ); end;', ​​

      @l_i_parameter1, 

      @l_i_parameter2,

      @l_i_parameter3, 

      @l_i_parameter4,

      @l_o_parameter1 OUTPUT

) W ORA_DB;

Więcej informacji:http://blogs.msdn.com/joaquinv/archive/2008/10/23/execute-oracle-stored-procedure-in-sql-server.aspx

Przykład 2a

Procedura T2T_collect_allx ma tylko dwa parametry wejściowe (daty rozpoczęcia i zakończenia).

EXECUTE ('rozpocznij T2T_collect_allx (SYSDATE - 40, SYSDATE); koniec;') ORA_DB;

Przykład 2b

SELECT * Z OPENQUERY(ORA_DB, 'rozpocznij T2T_collect_allx (SYSDATE - 40, SYSDATE); koniec;')



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak przywrócić dane w tabeli Oracle?

  2. Jak uzyskać instrukcję tworzenia tabeli Oracle w SQL*Plus?

  3. Typ danych Oracle Number na format daty i godziny

  4. Jak połączyć się z bazą danych Oracle za pomocą cx_Oracle z nazwą usługi i loginem?

  5. Znajdź zakresy z serii liczb w SQL/Oracle