Ir para conteúdo

POWERED BY:

Arquivado

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

lele01

Chamada de Procedure ODBC (Driver Oracle e SQL Server)

Recommended Posts

Pessoal

 

http://forum.imasters.com.br/public/style_emoticons/default/excl.gif

 

Tenho uma procedure em Oracle e SQL server, e esta deve ser chamada via ODBC e pode utilizar tanto driver Microsoft ODBC for Oracle quanto SQL server.

 

A conexão esta tudo OK, mas não estou conseguindo fazer a chamada da procedure, pois da erro de passagem de parametro.

 

Fiz um exemplo utilizando ODBC que utiliza drive sql server e funcionou.

 

Não sei como fazer em Oracle, alguem pode me ajudar.

 

Ou existe uma forma de utilizar a mesma chamada de procedure para os dois tipos de driver.

 

Alguem pode me ajudar? Preciso urgentemente, e não sei mais o que fazer. pois sou nova em desenvolvimento .Net (VB.net)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Meu projeto é Windows.

 

 

Eu quero que esta função execute a procedure com odbc, oracleclient e Sqlclient

Com o oracleclient e Sqlclient ela esta funcionando, caso que não acontece com ODBC.

Public Function SCA_UserId(ByVal cn As IDbConnection, ByRef sMsErro As String, _
							   ByRef lUser_Id As Long, Optional ByVal sUser As String = Nothing) As Boolean


		'Referencia para a interface IDbCommand
		Dim cmd As IDbCommand
		'Referencia para a interface IDataParameter
		Dim pr As IDbDataParameter
		'Retorno da execução da procedure
		Dim sRet As Boolean

		Try

			SCA_UserId = False

			'Consistencia dos parametros informados para
			'evitar erro na chamada da procedure

			If vb.Len(sUser) > 30 Then Exit Function
			'**********************************************************
			If kGeraVersaoDummy Then
				'Se for para gerar a versao Dummy
				'sempre retorna valor fixo
				lUser_Id = 0
				SCA_UserId = True
				Exit Function
			End If
			'**********************************************************

			cmd = cn.CreateCommand() 'Instancia o objeto de conexão conforme o tipo de Banco de Dados 
			cmd.CommandType = CommandType.StoredProcedure ' Tipo de comando a ser executado é StoreProcedure
			cmd.CommandText = "SCAP_UserID" 'Nome da StoreProcedure
			cmd.Connection = cn

			'Cria um objeto derivado de IDbDataParameter
			pr = cmd.CreateParameter()
			pr.ParameterName = "pUser_ID"
			pr.Direction = ParameterDirection.Output
			pr.DbType = DbType.Int32
			pr.Value = DBNull.Value
			cmd.Parameters.Add(pr)


			pr = cmd.CreateParameter()
			pr.ParameterName = "pUsd_NM"
			pr.Direction = ParameterDirection.Input
			pr.DbType = DbType.AnsiString
			pr.Value = sUser
			cmd.Parameters.Add(pr)

			sRet = cmd.ExecuteScalar

			If Not IsDBNull(cmd.Parameters(0).Value) Then
				lUser_Id = cmd.Parameters(0).Value
			End If
			SCA_UserId = True

		Catch er As Exception
			sMsErro = "Erro Procedure SCA_UserId - " & er.Message
			SCA_UserId = False
		End Try

	End Function

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.