Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

invocazione di una stored procedure oracle da SqlServer

179 views
Skip to first unread message

bella gita

unread,
Aug 4, 2003, 6:53:18 AM8/4/03
to
qualcuno sa se si può invocare una stored procedure oracle da uno script
transact sql?
ci sono limiti sul passaggi parametri?
sono supportati i paramentri in output?

ovviamente ho già un server collegato con cui riesco a fare select

P.S. E' quando il gioco si fa duro, che i duri incominciano a giocare!


Lorenzo Benaglia

unread,
Aug 4, 2003, 10:07:46 AM8/4/03
to
bella gita wrote:
> qualcuno sa se si può invocare una stored procedure oracle da uno
> script transact sql?

Ciao bella gita,

come riportato da John Paul Cook nell'articolo "Executing Stored Procedures
Remotely" apparso sul numero di Novembre 2001 di SQL Server Magazine, non è
possibile utilizzare un linked server per eseguire una stored procedure
Oracle da SQL Server.
Ad ogni modo è possibile aggiornare una tabella Oracle tramite un linked
server.
Sfruttanto questa possibilità, John suggerisce di definire un TRIGGER di
UPDATE sulla tabella Oracle che vada ad eseguire la stored procedure.

Ad esempio, supponiamo di create la tabella EXEC_PROC_AFTER_UPDATE e di
definire su di essa il TRIGGER ARTR_EXEC_PROC_AFTER_UPDATE:

CREATE TABLE EXEC_PROC_AFTER_UPDATE
(UPDATE_THIS_TO_EXEC NUMBER);

INSERT INTO EXEC_PROC_AFTER_UPDATE
(UPDATE_THIS_TO_EXEC) VALUES (0);

COMMIT;

CREATE OR REPLACE TRIGGER ARTR_EXEC_PROC_AFTER_UPDATE
AFTER UPDATE ON EXEC_PROC_AFTER_UPDATE
FOR EACH ROW
BEGIN
REMOTELY_TRIGGERED_PROC; -- This is the name
of the stored procedure.
END;

A questo punto da Query Analyzer puoi eseguire il seguente batch per
invocare l'esecuzione della stored procedure:

UPDATE ORADB..SCOTT.EXEC_PROC_AFTER_UPDATE
SET UPDATE_THIS_TO_EXEC = 1

Ciao!

--
Lorenzo Benaglia
Microsoft MVP - SQL Server


bella gita

unread,
Aug 4, 2003, 12:56:08 PM8/4/03
to
Grazie per la risposta: ho capito che non è una cosa semplice!
Una tecnica affascinante ma non posso creare tabelle e trigger sul datbase
oracle!

A questo punto pensavo di usare di inventare una nuova strada attraverso
l'uso di OPENQUERY.
debbo invocare una stored procedure che ha tre parametri di ingresso ed uno
di uscita, potrei fare una cosa del genere

declare @OraCommand varchar(1000)

SET @OraCommand ='EXECUTE REMOTECOMMNAD @outvar, 'input1', 'input2',
'input3'; SELECT @outvar AS RITORNO;'

SELECT RITORNO FROM OPENQUERY(OracleSvr, @OraCommand)

Il mio problema è che conosco poco oracle, e non so come scrivere
esattamente il comando oracle!
Cosa ne pensi? Come andrà scritto il comando oracle?

Grazie comunque di tutto
Bruno Guidetti "Bella Gita"

P.S. passare da query analyzer ai programmi oracle è un trauma da ricovero!
avete consigli?


"Lorenzo Benaglia" <lbenagl...@tin.it> ha scritto nel messaggio
news:bglpc9$q2km8$1...@ID-154627.news.uni-berlin.de...

Lorenzo Benaglia

unread,
Aug 4, 2003, 12:19:57 PM8/4/03
to
bella gita wrote:
> A questo punto pensavo di usare di inventare una nuova strada
> attraverso l'uso di OPENQUERY.

Ciao Bruno,

John afferma che: "Even OPENQUERY and OPENROWSET can't get around that
limitation", quindi credo che non sia possibile richiamare direttamente una
sp da SQL Server.

> Grazie comunque di tutto
Prego.

0 new messages