Ir para conteúdo

Arquivado

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

rafa-martin

[Resolvido] como passar parametro de saida sendo cursor

Recommended Posts

pessoa eu tenho a packge PK_VDESC_CONTRATO com a seguinte procdure PROCEDURE RETORNA_CONTRATO(ID_CONTRATO IN NUMBER, COD_CIA IN NUMBER, P_CURSOR OUT TP_REF_CURSOR); no oracle. notem que meu terceiro parametro é um parametro de saída.

 

aí esotu fazendo um teste bem simples só para ver se me retorna o resultado. abaixo:

 

OracleConnection conn = new OracleConnection();
		OracleCommand cmd = new OracleCommand();
		conn.ConnectionString = "Provider=MSDAORA.1;Password=tron2000;User ID=ops$tron2000;Data Source=AGS;Persist Security Info=True";
		if (conn.State == ConnectionState.Closed)
		{
			conn.Open();

			
			cmd.CommandText = "PK_VDESC_CONTRATO.RETORNA_CONTRATO";
			cmd.CommandType = CommandType.StoredProcedure;

			cmd.Parameters.Add("24");
			cmd.Parameters.Add("1");
			cmd.ExecuteNonQuery();

veja qe passei meus dois primeiros parametros

 

cmd.Parameters.Add("24");

cmd.Parameters.Add("1");

 

como eu passo o terceiro parametro, já que é um parametro de saída?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Amigo, eu não entendi direito o seu código e também nunca usei oracle mas eu faço da forma descrita abaixo.

Acho que deve ser a mesma forma:

 

SqlConnection con = new SqlConnection(_connectionString);

SqlCommand cmd = new SqlCommand("webAdminNoticias_Save", con);

cmd.CommandType = CommandType.StoredProcedure;

 

 

/*

na store procedure

@data smalldatetime,

@titulo nvarchar(100),

@subTitulo nvarchar(255),

@materia nvarchar(4000),

@foto nvarchar(100),

@fotografo nvarchar(50),

@legenda nvarchar(255),

@fonte nvarchar(100),

@creditos nvarchar(100),

@link nvarchar(100),

@status int,

@ret int output

*/

 

 

DateTime _data = Convert.ToDateTime(data);

cmd.Parameters.AddWithValue("@idNoticia", idNoticia);

cmd.Parameters.AddWithValue("@data", _data);

cmd.Parameters.AddWithValue("@titulo", titulo);

cmd.Parameters.AddWithValue("@subTitulo", subTitulo);

cmd.Parameters.AddWithValue("@materia", materia);

cmd.Parameters.AddWithValue("@foto", foto);

cmd.Parameters.AddWithValue("@fotografo", fotografo);

cmd.Parameters.AddWithValue("@legenda", legenda);

cmd.Parameters.AddWithValue("@fonte", fonte);

cmd.Parameters.AddWithValue("@creditos", creditos);

cmd.Parameters.AddWithValue("@link", link);

cmd.Parameters.AddWithValue("@status", status);

 

cmd.Parameters.AddWithValue("@ret", 0);

cmd.Parameters["@ret"].Direction = ParameterDirection.Output;

 

using (con)

{

con.Open();

cmd.ExecuteNonQuery();

// retorna para o codebehind que chamou o class

return Convert.ToInt32(cmd.Parameters["@ret"].Value.ToString());

}

Compartilhar este post


Link para o post
Compartilhar em outros sites

é oracle. mais tudo bem eu consegui fazer.

 

OracleCommand cmd = new OracleCommand();
			cmd.Connection = Conexao_ORA("banco", "usuario", "senha");
			cmd.CommandType = CommandType.StoredProcedure;
			cmd.CommandText = "PK_VDESC_CONTRATO.RETORNA_CONTRATO";
			

			cmd.Parameters.Add("ID_CONTRATO", OracleType.Number).Value = 24;
			cmd.Parameters.Add("COD_CIA",OracleType.Number).Value = 1;
			cmd.Parameters.Add("P_CURSOR",OracleType.Cursor).Direction = ParameterDirection.Output;
			OracleDataReader dr = cmd.ExecuteReader();


			while (dr.Read())
			{
				ListBox1.Items.Add(dr["VOLUMEVENDAS"].ToString());
			}

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.