Вы находитесь на странице: 1из 3

Parámetro OUTPUT

Los procedimientos almacenados pueden recibir parámetros, tanto de entrada como salida
(OUTPUT) estos parámetros sirven para devolver mensajes o estados al programa que los
invoca.

Create Procedure sp_NuevaCompania( @nombre nvarchar(50),

@tel nvarchar(8), @resp nvarchar(50) OUTPUT )

as

BEGIN

Declare @id int

--Set @nombre = 'United Package'

If Exists (

Select * From compañiasdeenvios

Where nombreCompañia = @nombre)

Set @resp = 'Error el nombre de la compañia ya existe'

else

begin

Select @id=max(idCompañiaEnvios) From compañiasdeenvios

Set @id = @id + 1

Insert Into compañiasdeenvios

Values (@id, @nombre, @tel)

Set @resp = 'La compañia ha sido grabada'

end

END
Para ejecutar o invocar este procedimiento almacenado desde el mismo Sql Server:

declare @r nvarchar(50)

exec sp_NuevaCompania 'FedexX', '555-222', @r OUTPUT

Select @r

Código en C# que invoca al Procedimiento


Código de C# que invoca al procedimiento almacenado que devuelve un parámetro de salida.

private void button1_Click(object sender, EventArgs e)

SqlConnection conexion;

SqlCommand comando;

SqlParameter para;

string sql, cadena, respuesta="";

cadena = "Data Source=(local)\\SqlExpress; Initial Catalog=Practica; User Id=sa;


Password=database";

using (conexion = new SqlConnection(cadena))

conexion.Open();

sql = "sp_NuevaCompania";

comando = new SqlCommand();

comando.CommandType = CommandType.StoredProcedure;

comando.CommandText = sql;

comando.Connection = conexion;
para = new SqlParameter();

para.ParameterName = "@nombre";

para.Value = this.textBox1.Text;

comando.Parameters.Add(para);

para = new SqlParameter();

para.ParameterName = "@tel";

para.Value = this.textBox2.Text;

comando.Parameters.Add(para);

para = new SqlParameter();

para.ParameterName = "@resp";

para.Value = respuesta;

para.SqlDbType = SqlDbType.NVarChar;

para.Size = 50;

para.Direction = ParameterDirection.Output;

comando.Parameters.Add(para);

comando.ExecuteNonQuery();

respuesta = comando.Parameters["@resp"].Value.ToString();

MessageBox.Show(respuesta);

Вам также может понравиться