Avatar billede kernelx Juniormester
13. juni 2008 - 10:14 Der er 8 kommentarer og
1 løsning

funktion med INSERT og RETURN-value

Hi,

jeg har en Oracle-funktion:
+++
create or replace function TBLTEST_FUNKTION(testvalue in integer) return integer is
  Result integer;
begin
  INSERT INTO (col1,col2) VALUES ( testvalue, 'abcdefg' );
  Result := testvalue;
  return(Result);
end TBLTEST_FUNKTION;
+++

Nu vil jeg gerne faa en SQL-query til at udfoere denne funktion og samtidig faa fat i Return-vaerdien.

SELECT TBLTEST_FUNKTION( 1234 ) FROM DUAL
virker ikke pga. at man ikke maa bruge INSERT indenfor en SELECT.

Er der nogen, som ved en loesning til dette problem?

med venlig hilsen
KernelX
Avatar billede arne_v Ekspert
13. juni 2008 - 10:22 #1
Var det ikke bedre at lave det som en SP og saa hente retur vaerdi fra den SP ?
Avatar billede kernelx Juniormester
13. juni 2008 - 11:06 #2
Det var det sikkert :-)
Jeg er ny paa dette omraade, saa jeg kender ikke til alle mulighederne.
Hvordan kan jeg saette en retur-vaerdi i en stored procedure?
Avatar billede arne_v Ekspert
13. juni 2008 - 12:17 #3
http://www.informit.com/articles/article.aspx?p=26251&seqNum=6
http://exampledepot.com/egs/java.sql/CreateProcedureAndFunction.html

viser brug af en Oracle SP med output parametre fra Java (jeg tillader mig at gaette
paa at det er Java - men du kan lave det samme fra .NET eller C)
Avatar billede kernelx Juniormester
13. juni 2008 - 12:46 #4
nej, det er desvaerre en ren SQL-Query, som skal fyres af fra en client.
Der er blandt andet systemer, som kun er i stand til at bruge SQL-queries - og som ellers ikke har interfaces til externe java-classes eller noget fra .net :-(
Avatar billede kernelx Juniormester
16. juni 2008 - 10:21 #5
jeg kan connecte til en java-class-methode inde i Oracle-funktionen. Og denne java-class kan ändre paa db-vaerdier.
Avatar billede kernelx Juniormester
17. juni 2008 - 09:10 #6
+++
create or replace function TBLSESSION_JAVA_TEST(val in number)
return number
as language java
  name 'TestClass.testMethod(int) return int';
+++
create or replace and compile java source named TestClass as

import java.sql.*;

public class TestClass {

  public static int testMethod( int val ) {
    //...
  }

}
+++

husk at skrive et eller andet som svar
Avatar billede kernelx Juniormester
23. juni 2008 - 10:58 #7
@arne_v: husk at skrive et eller andet som svar
Avatar billede arne_v Ekspert
24. juni 2008 - 01:27 #8
svar

selvom jeg nu ikke synes at jeg har bidraget med meget
Avatar billede kernelx Juniormester
28. juni 2008 - 16:56 #9
du har allerede hjulpet mig med saa mange ting paa eksperten, saa det er bare OK :-)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester