Visual Basic - Cómo ejecutar proc. almacenados de Oracle

Life is soft - evento anual de software empresarial
 
Vista:

Cómo ejecutar proc. almacenados de Oracle

Publicado por Patri (3 intervenciones) el 09/11/2005 10:38:23
Hola a todos

No encuentro la manera de ejecutar un procedimiento almacenado de oracle desde visual basic y cómo se recogen los valores?

strConex = "Provider=MSDAORA;Data Source=MIBD;User ID=sa; Password=sa"
Set commandSql = New ADODB.Command
With commandSql
lngOptions = adCmdStoredProc
strSQL = "cash_Delete"
.CommandText = strSQL
aParameters = "E82H3"
.ActiveConnection = conexionMas
Set rsResultado = .Execute(lngRegAfec, aParameters, lngOptions)
End With

No me funciona

Alguien me puede ayudar?
Gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Cómo ejecutar proc. almacenados de Oracle

Publicado por Cecilia Colalongo (3116 intervenciones) el 09/11/2005 13:20:25
Fijate con:

Dim cmd As Command, rst As Recordset

Set cmd = New Command
Set cmd.ActiveConnection = TuObjetoConnection

cmd.CommandType = adCmdStoredProc
cmd.CommandText = "TuProcedimiento"
cmd.Parameters.Append cmd.CreateParameter ("ParametroEntrada1",adInteger,adParamInput,4,MiNumero)
cmd.Parameters.Append cmd.CreateParameter("ParametroSalida1",adInteger,adParamOutput,4)
cmd.Parameters.Append cmd.CreateParameter("ParametroSalida2",adInteger,adParamOutput,4)

Set rst=cmd.Execute

Y para ver los parámetros de salida:

cmd.Parameters.Item("ParametroSalida1").Value
cmd.Parameters.Item("ParametroSalida2").Value
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Cómo ejecutar proc. almacenados de Oracle

Publicado por patri (3 intervenciones) el 09/11/2005 16:10:36
Gracias
El problema es que tengo que ejecutar procedimientos almacenados con un montón de parámetros de entrada y me resulta muy engorroso tener que definirlos todos.
Hay alguna otra forma de ejecutar sin tener que indicar los tipos de los parámetros de entrada?

He probado esto:
With commandSql
.CommandType = adCmdStoredProc
.CommandText = "BOND('ESH3',null,null)"
.ActiveConnection = conexionMas
.Execute
End With
y ha ido bien pero no se como recoger los resultados del procedimiento.
Si defino lo de salida:
.Parameters.Append .CreateParameter("StoO", adInteger, adParamOutput)
luego no me funciona:
MsgBox .Parameters.Item("StoO").Value

Si alguien sabe cómo hacerlo os lo agradecería

Muchas gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Cómo ejecutar proc. almacenados de Oracle

Publicado por Cecilia Colalongo (3116 intervenciones) el 09/11/2005 20:19:12
No te va a funcionar porque el parámetro que estás definiendo lo toma como el primero (de entrada) y no como los de salida. Una forma que se me ocurre para automatizarlo es que con ADOX o con OpenSchema de ADO tomes todos los parámetros de cada SP y los defina.

Y luego solo cargues los valores de los parámetros de entrada y luego tomes los de salida.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Cómo ejecutar proc. almacenados de Oracle

Publicado por Patri (3 intervenciones) el 10/11/2005 18:03:59
Gracias Cecilia
sigo con problemas....

'La definición del Procedimiento es así:
CREATE OR REPLACE PROCEDURE Bond(
ID CHAR ,
Ign CHAR ,
RC IN OUT BondPkg.RC)
AS
selcnt INTEGER;
error INTEGER;
rowcnt INTEGER;
errmsg VARCHAR2(250);
sqlstatus INTEGER;
rtn INTEGER;
begin
....
end;

Defino los parámetros:
.Parameters.Append .CreateParameter("ID", adVarChar, adParamInput, 30, "ES0")
.Parameters.Append .CreateParameter("IGN", adVarChar, adParamInput, 30, Null)
.Parameters.Append .CreateParameter("RC", adVariant, adParamInputOutput, 30, Null)
.Parameters.Append.CreateParameter("selcnt",adInteger,dParamReturnValue)
.Parameters.Append.CreateParameter("error",dInteger,adParamReturnValue)
.Parameters.Append.CreateParameter("rowcnt",adInteger,adParamReturnValue)
.Parameters.Append.CreateParameter"errmsg",adVarChar,adParamReturnValue, 250)
.Parameters.Append.CreateParameter("sqlstatus",adInteger,dParamReturnValue)
.Parameters.Append.CreateParameter("rtn",adInteger,adParamReturnValue)

y al ejecutar me da un error: "ORA-01036: illegal variable name/number"

Ni aún definiendo los parámetros consigo ejecutar el procedimiento
Si sabéis porqué me da el error .....
Gracias y saludos
Patri
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar