L'appel de l'oracle de la fonction à l'aide de lien de base de données
J'ai créé un oracle de la fonction appelée getEmployee(id in varchar)
dans ma base de données à distance et je suis en train de l'appeler à partir de ma base de données locale à l'aide de lien de base de données.
Dans getEmployee
, je suis en train de retourner un curseur avec les données de l'employé.(Tableau: Employé (ID, Nom, adresse)):
SELECT schema.getEmployee@dblink(id)
FROM DUAL;
Comment puis-je obtenir le jeu de résultats avec le nom de la colonne (ID, Nom, adresse)?
Selon Contrad, j'ai changé mon local de la fonction comme ceci;
FUNCTION LocalGetEmployee(ID in varchar2)
RETURN Schema.SomeRefCursor
AS
OUTPUT Schema.SomeRefCursor;
BEGIN
OUTPUT := schema.getEmployee@dblink(ID);
RETURN OUTPUT;
END;
Mais, quand j'ai appeler cette fonction à partir du Code Java, l'erreur suivante est générée:
"ORA-24338: descripteur d'instruction non exécuté"
Ce problème précis avez-vous? Merci de nous donner quelque chose à faire sur les messages d'erreur, la description du comportement, etc
Si j'exécute instruction SELECT ci-dessus par le biais de code Java, est-il un moyen de récupérer le curseur (de retour de la fonction) avec les noms de colonnes?
Quel est le rendement type de la fonction à distance?
C'est un type de curseur.
double possible de l'Appel d'un oracle de la fonction de Java
Si j'exécute instruction SELECT ci-dessus par le biais de code Java, est-il un moyen de récupérer le curseur (de retour de la fonction) avec les noms de colonnes?
Quel est le rendement type de la fonction à distance?
C'est un type de curseur.
double possible de l'Appel d'un oracle de la fonction de Java
OriginalL'auteur Kapila Witharana | 2011-05-05
Vous devez vous connecter pour publier un commentaire.
De l'extraction de l'Ref Curseur sur le site Distant:
Disons que nous avons deux sites impliqués dans les transactions Distribuées, Server1 et Server2. Le Curseur Ref ouvert sur Server1 procédure, ne peut pas être établie lors de Server2 site. Si nous essayons de récupérer ce curseur oracle soulève une exception:
“Nous ne pouvons pas utiliser la Ref Curseur sur DBLink”
Solutions:
initiateur du site au lieu de l'ouverture du Curseur.
Source: Transaction distribuée dans Oracle (Plus de Oracle DBLink)
OriginalL'auteur Andrew
Aussi loin que je peux dire à votre question n'est pas vraiment à propos de liens de base de données, mais plutôt de savoir comment, à partir d'un client Java, pour appeler une fonction qui retourne un curseur et de récupérer les données à partir de ce curseur. Je crois que la seule façon de le faire en Java consiste à envelopper l'appel de la fonction dans un peu de "procédure" du code. Je n'ai pas de Oracle en face de moi, donc c'est une devinette:
Hm. Ce pilote JDBC utilisez-vous? Quel est votre chaîne de connexion ressemble? Vous pouvez poster votre code Java? Aussi, faites-vous appel à
rs.next()
avant de tenter de récupérer les données?Je suis à l'aide d'Oracle JDBC driver. Aussi, je suis en utilisant le même code Java que vous avez posté ici. Qu'entendez-vous par " l'appel de rs.next() avant de tenter de récupérer les données?'? Je exécuter l'instruction avant d'appeler le jeu de résultats.la méthode next ().
OriginalL'auteur Dan