Visualizzazione dei risultati da 1 a 6 su 6
  1. #1

    Richiamare da ASP una funzione ORACLE.

    Qual è la sintassi da utilizzare?
    Per la prima volta mi trovo ad affrontare questo problema e dopo svariate ricerche (Google), non ho ottenuto granchè come informazioni.

    Qui qualcuno che si è già cimentato e può aiutarmi in proposito?

    Grazie anticipato!
    Provare paura per un qualcosa che ti possa capitare nel futuro non ti evita quell'evento,ti fa soltanto vivere un presente sbagliato!

  2. #2
    Utente di HTML.it L'avatar di kluster
    Registrato dal
    Jul 2003
    Messaggi
    1,288
    intendi una stored procedure?
    dai un occhiata qui
    http://support.microsoft.com/default...b;EN-US;229919

  3. #3
    Utile, thanks!
    Provare paura per un qualcosa che ti possa capitare nel futuro non ti evita quell'evento,ti fa soltanto vivere un presente sbagliato!

  4. #4
    Utente di HTML.it L'avatar di kluster
    Registrato dal
    Jul 2003
    Messaggi
    1,288

  5. #5
    Torno alla carica.

    Ho trovato online la seguente sintassi per invocare da ASP una stored procedure ORACLE:

    codice:
    OraDatabase.Parameters.Add "CODAZ", CODAZ, 1
    OraDatabase.Parameters("CODAZ").ServerType = 1
    	
    OraDatabase.Parameters.Add "APPROVATORE", APPROVATORE, 1
    OraDatabase.Parameters("APPROVATORE").ServerType = 2
    	
    OraDatabase.Parameters.Add "TIPOLOGIA", TIPOLOGIA, 1
    OraDatabase.Parameters("TIPOLOGIA").ServerType = 1
    	
    OraDatabase.Parameters.Add "err_code", 0, 2
    OraDatabase.Parameters("err_code").ServerType = 2
    	
    OraDatabase.Parameters.Add "DELEGA", DELEGA, 2
    OraDatabase.Parameters("DELEGA").ServerType = 1
    	
    OraDatabase.Parameters.Add "APPRCASSA", APPRCASSA, 2
    OraDatabase.Parameters("APPRCASSA").ServerType = 1
    
    OraDatabase.Parameters.Add "PROSSIMA", PROSSIMA, 2
    OraDatabase.Parameters("PROSSIMA").ServerType = 1
    Ecco, il mio quesito è capire la logica dei numeri (o, 1, 2, ecc....) utilizzati per ogni coppia di righe.
    Secondo quale sintassi si usa 1 piuttosto che 2, o 0...
    Qualcuno mi sa dare un aiuto in merito?

    P.S.:Queste impostazioni le ho trovate in un esempio e vengono impostate prima dell'invocazione alla stored procedure.
    Provare paura per un qualcosa che ti possa capitare nel futuro non ti evita quell'evento,ti fa soltanto vivere un presente sbagliato!

  6. #6

    Rispondo nuovamente a me stesso.

    Ho la seguente funzione Oracle:

    create or replace function SIOFG501_TROVA_PROSSIMO(
    i_codaz in char, <-- INPUT
    i_utente in varchar2, <-- INPUT
    i_tipo in number, <-- INPUT
    o_delega out number, <-- OUTPUT
    o_apprcassa out number, <-- OUTPUT
    o_prossima out varchar2 <-- OUTPUT
    )

    return number is res number;
    QUI CI STA IL CODICE
    end SIOFG501_TROVA_PROSSIMO;
    Che riceve in input 3 parametri (i_codaz, i_utente, i_tipo) e torna 3 parametri di output (o_delega, o_apprcassa, o_prossima), oltre all'esito dell'esecuzione (res).
    Fin qui tutto ok!

    Nella pagina asp in cui va invocata questa funzione, vengono seguiti degli step appositi, te li scrivo.

    1 STEP
    codice:
     '------------------------------------------
     'set up server side parameters
     '------------------------------------------ 
     OraDatabase.Parameters.Add "CODAZ", CODAZ, 1
     OraDatabase.Parameters("CODAZ").ServerType = 1
     
     OraDatabase.Parameters.Add "APPROVATORE", APPROVATORE, 1
     OraDatabase.Parameters("APPROVATORE").ServerType = 1
     
     OraDatabase.Parameters.Add "TIPOLOGIA", TIPOLOGIA, 1
     OraDatabase.Parameters("TIPOLOGIA").ServerType = 2
     
     OraDatabase.Parameters.Add "err_code", 0, 2
     OraDatabase.Parameters("err_code").ServerType = 2
     
     OraDatabase.Parameters.Add "DELEGA", DELEGA, 2
     OraDatabase.Parameters("DELEGA").ServerType = 2
     
     OraDatabase.Parameters.Add "APPRCASSA", APPRCASSA, 2
     OraDatabase.Parameters("APPRCASSA").ServerType = 2
     
     OraDatabase.Parameters.Add "PROSSIMA", PROSSIMA, 2
     OraDatabase.Parameters("PROSSIMA").ServerType = 1
    2 STEP
    codice:
     
     '--------------------------------------------
     ' launch oracle stored procedure
     '--------------------------------------------
     
     SQL = "declare err_code number; "
     SQL = SQL & "Begin :err_code := SIOFG501_TROVA_PROSSIMO( " & _
      ":CODAZ, :APPROVATORE, :TIPOLOGIA, :DELEGA, " & _
      ":APPRCASSA, :PROSSIMA); end;"
     
     OraDatabase.DbExecuteSQL SQL
     
     RETCODE = OraDatabase.Parameters("err_code")
     DELEGA = OraDatabase.Parameters("DELEGA")
     APPRCASSA = OraDatabase.Parameters("APPRCASSA")
     PROSSIMA = OraDatabase.Parameters("PROSSIMA")
    3 STEP
    codice:
     
     '--------------------------------------
     ' distroing parameters
     '--------------------------------------
     For i = OraDatabase.Parameters.Count to 1 step -1
      OraDatabase.Parameters.Remove i - 1
     Next
    Come potete vedere sono abbastanza intuitivi.
    Nel primo si setta i paramentri necessari per la funzione, nel secondo invoca la function e nel terzo distrugge i parametri.

    Il mio quesito verte sul 1 STEP.

    Come si può vedere vi sono, per ogni parametro oggetto della function, una coppia di righe ciascuna.
    Nella prima riga di ciascuna coppia viene aggiunto il paramentro mediante il metodo ADD; nella seconda viene specificato il tipo di dato (ServerType).

    A fronte di quanto ho potuto constatare da ricerche fatte online che invocano function Oracle, sono giunto a queste conclusioni.

    1)OraDatabase.Parameters.Add "CODAZ", CODAZ, 1 <-- subito dopo l'ADD vengono specificati il nome della variabile, la variabile stessa e se questa è di input o output (1 = input; 2 = output).

    2)OraDatabase.Parameters("CODAZ").ServerType = 1 <-- La specifica del ServerType varia a seconda del tipo di dato (1 = char o varchar2; 2 = number).

    Quindi nella coppia:
    codice:
     OraDatabase.Parameters.Add "CODAZ", CODAZ, 1
     OraDatabase.Parameters("CODAZ").ServerType = 1
    viene stabilito che il parametro CODAZ è un parametro di input(1 prima riga) di tipo char(1 seconda riga).

    Mentre nella coppia:
    codice:
     
     OraDatabase.Parameters.Add "DELEGA", DELEGA, 2
     OraDatabase.Parameters("DELEGA").ServerType = 2
    viene stabilito che il parametro DELEGA è un parametro di output(2 prima riga) di tipo number(2 seconda riga).

    Per quanto riguarda l'err_code:
    codice:
     
     OraDatabase.Parameters.Add "err_code", 0, 2 
     OraDatabase.Parameters("err_code").ServerType = 2
    viene stabilito che il parametro err_code è un parametro di output (2 prima riga) di tipo number(2 seconda riga).

    Piaciuta l'analisi tracciata? Penso sia abbastanza chiara...
    Quello che chiedo, se magari qualcuno era già a conoscenza di questa sintassi procedurale, se quello che ho stilato, è quello che realmente ho intuito, oppure se ho scritto una serie di baggianate!!!

    :)
    Provare paura per un qualcosa che ti possa capitare nel futuro non ti evita quell'evento,ti fa soltanto vivere un presente sbagliato!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.