Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

othon

chamando função no oracle

Recommended Posts

gostaria de chamar uma função no oracle que tem a seguinte assinatura:

 

 

function FUN_LST_PERFIS_USU_APLIC_UA (

P_COD_APLICACAO IN APLICACAO.COD_APLICACAO%TYPE,

P_COL_USERNAME IN USUARIO.COL_USERNAME%TYPE,

P_COD_UNIDADE IN UNIDADE_ADMINISTRATIVA.COD_UNIDADE%type,

P_COD_USUARIO OUT USUARIO.COD_USUARIO%TYPE,

P_RSET_PERF_USUARIO OUT T_RECORDSET

) return number is

 

 

estou chamando da seguinte forma:

 

con.Open

Set cmd = New ADODB.Command

Set cmd.ActiveConnection = con

cmd.CommandType = adCmdStoredProc

cmd.CommandText = "ADMA.ADM_CONTROLE_ACESSO.FUN_LST_PERFIS_USU_APLIC_UA"

 

cmd.Parameters.Append cmd.CreateParameter("P_COD_USUARIO", adNumeric, adParamInput, 20, codusu)

cmd.Parameters.Append cmd.CreateParameter("P_RSET_PERF_USUARIO", adVariant, adParamInput, 20, varrecord)

cmd.Parameters.Append cmd.CreateParameter("P_COD_APLICACAO", adNumeric, adParamInput, 4, 50)

cmd.Parameters.Append cmd.CreateParameter("P_COL_USERNAME", adVarChar, adParamInput, 40, login)

cmd.Parameters.Append cmd.CreateParameter("P_COD_UNIDADE", adNumeric, adParamInput, 12, codUndAdm)

 

Set retorno = cmd.Execute

 

 

me retorna o seguinte erro:

wrong number or types of arguments in call to 'fun_lst_perfis_usu_aplic_ua'

 

acredito que o erro possa estar na definição do tipo de variável que é passado na criação do 2º parametro que deve ser recordset. como eu defino esse tipo? adrecordset?

 

obrigado!!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

gostaria de chamar uma função no oracle que tem a seguinte assinatura:

 

 

function FUN_LST_PERFIS_USU_APLIC_UA (

P_COD_APLICACAO IN APLICACAO.COD_APLICACAO%TYPE,

P_COL_USERNAME IN USUARIO.COL_USERNAME%TYPE,

P_COD_UNIDADE IN UNIDADE_ADMINISTRATIVA.COD_UNIDADE%type,

P_COD_USUARIO OUT USUARIO.COD_USUARIO%TYPE,

P_RSET_PERF_USUARIO OUT T_RECORDSET

) return number is

 

 

estou chamando da seguinte forma:

 

con.Open

Set cmd = New ADODB.Command

Set cmd.ActiveConnection = con

cmd.CommandType = adCmdStoredProc

cmd.CommandText = "ADMA.ADM_CONTROLE_ACESSO.FUN_LST_PERFIS_USU_APLIC_UA"

 

cmd.Parameters.Append cmd.CreateParameter("P_COD_USUARIO", adNumeric, adParamInput, 20, codusu)

cmd.Parameters.Append cmd.CreateParameter("P_RSET_PERF_USUARIO", adVariant, adParamInput, 20, varrecord)

cmd.Parameters.Append cmd.CreateParameter("P_COD_APLICACAO", adNumeric, adParamInput, 4, 50)

cmd.Parameters.Append cmd.CreateParameter("P_COL_USERNAME", adVarChar, adParamInput, 40, login)

cmd.Parameters.Append cmd.CreateParameter("P_COD_UNIDADE", adNumeric, adParamInput, 12, codUndAdm)

 

Set retorno = cmd.Execute

 

 

me retorna o seguinte erro:

wrong number or types of arguments in call to 'fun_lst_perfis_usu_aplic_ua'

 

acredito que o erro possa estar na definição do tipo de variável que é passado na criação do 2º parametro que deve ser recordset. como eu defino esse tipo? adrecordset?

 

obrigado!!!

Um parâmetro do tipo recordset?? Não entendi...

 

No link abaixo ensina como criar tabelas, mas em momento algum sita o esse tipo de parâmetro.

Nunca mexi com oracle, mas no SQL Server e no acess não tenho esse tipo de declaração (recordset), tente explicar para que server que talvez possa te ajudar melhor.

 

Abraços...

Compartilhar este post


Link para o post
Compartilhar em outros sites

é pq o segundo parametro "P_RSET_PERF_USUARIO" me retorna um recordset. e não sei que tipo especificar quando eu crio o mesmo.

 

é pq o segundo parametro "P_RSET_PERF_USUARIO" me retorna um recordset. e não sei que tipo especificar quando eu crio o mesmo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

ficaria mais ou menos assim?

 

cmd.Parameters.Append cmd.CreateParameter("P_RSET_PERF_USUARIO", adNumeric, adParamInput, 4, varRecord(1, 4))

 

valew

Compartilhar este post


Link para o post
Compartilhar em outros sites

ficaria mais ou menos assim?

 

cmd.Parameters.Append cmd.CreateParameter("P_RSET_PERF_USUARIO", adNumeric, adParamInput, 4, varRecord(1, 4))

 

valew

Só que assim Othon, você vai utilizar essa variável do tipo recordset no seu programa não é? Eu acho que no oracle você não tem como fazer uma declaração desse tipo.

 

Não consegui entender sua necessidade.

Compartilhar este post


Link para o post
Compartilhar em outros sites

ficaria mais ou menos assim?

 

cmd.Parameters.Append cmd.CreateParameter("P_RSET_PERF_USUARIO", adNumeric, adParamInput, 4, varRecord(1, 4))

 

valew

Só que assim Othon, você vai utilizar essa variável do tipo recordset no seu programa não é? Eu acho que no oracle você não tem como fazer uma declaração desse tipo.

 

Não consegui entender sua necessidade.

 

 

 

Eu preciso chamar uma função em um determinado esquema... essa função contem 5 parametros, 3 de entrada e 2 de saida... os parametros de saida são:

1 - retorna numerico

2 - retorna recordset

 

estou tento problema com o tipo desse segundo parametro.

se ele retorna recordset, qual tipo que eu devo especificar na chamada(se fosse numerico seria "adnumeric")?

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.