Como darle valor a variable en un Procedimiento almacenado al momento de ejecutarlo ?

Tengo un codigo algo como esto para no hacerlo tan largo:

ALTER Procedure [dbo].[CabeceraCompras](
aqui declaro las variables...)
As

if @Tipo=1

begin

INSERT INTO Header_Compra(xxxxxxxxxxxxxxxxxx)
end

Este es el codigo que uso para ejecutar el procedimiento en la aplicación:

Como puedo darle valor desde aqui a la variable @Tipo??? Ya que originalmente puede ser 1,2,3

Cnn.Execute " Exec CabeceraCompras '" & .TextControl & "','" & .TextId & "'," & _
Replace(.TextFactor, ",", ".") & "," & Replace(.TextMonto, ",", ".") & "," & Replace(Me.TextBFlete, ",", ".") & "," &_ Replace(Me.TextBGrabable, ",", ".") & ", " & Replace(TexDescuento, ",", ".") & ", " & Replace(Me.Textsubtotal, ",", ".") & "," & _
Replace(Me.TextBIva, ",", ".") & "," & Replace(Me.Textotal, ",", ".") & ",'" & Me.TextObservaciones & "'"

Depende del tipo ejecutar un insert diferente.

Respuesta
1

No se entiende, @¿tipo es un parámetro o una variable del stored procedure?

¡Gracias!  por responder,es un parametro

sucede que tengo que insertar datos de compras de pedidos y de ventas y uso el mismo formulario para los tres entonces quiero que cuando le de el valor de 1 y ejecute le SP me inserte compras,en la tabla de compras,si le doy el valor de 2 me inserte en la tabla pedidos,si le asigno el valor de 3 pues que sea la tabla facturas dependiendo del valor que le asigne a @tipo se realizara la insercion en las distintas tablas,esto con el fin de no estar creando SP para cada tipo de movimientos(Compras;Pedidos;ventas) si no que con solo un Sp con tan solo el @ tipo de parametro me envie la insercion a donde corresponda

f @Tipo=1

begin

INSERT INTO Header_Compra(xxxxxxxxxxxxxxxxxx)
end

f @Tipo=2

begin

INSERT INTO Header_Pedidos(xxxxxxxxxxxxxxxxxx)
end

f @Tipo=3

begin

INSERT INTO Header_Facturas(xxxxxxxxxxxxxxxxxx)
end

Fichu gracias por tu colaboracion eso lo se,no lo coloque para no hacer largo el post mi inquietud es en la aplicacion al ejecutar el procedure como le asigno el valor al parametro es decir que desde mi aplicacion yo le pueda enviar el valor a @tipo y este al recibir el valor ejecute el SP y me haga la insercion segun las condiciones ya expuestas,un saludo espero me entiendas y puedas echarme una mano

En el EXEC le debés pasar el valor 1,2,3 en la posición que corresponde al parámetro @tipo

Como asi? Cnn.execute "exec cabeceras" variables del insert,parametro@tipo .

De esa forma?

Depende en la posición que esté definido @tipo en la lista de parámetros del stored procedure

Pues al crear el procedure (defino variables del insert) as

Declare @tipo int

Aqui empieza las condiciones...if

Aqui el insert...y asi con todas las condiciones.

Segun este orden donde deveria ir el parametro

Execute cabeceras ...variables del insert

Debes definir @tipo como un parámetro más, no como variable

¡Gracias!  Fichu ,la verdad es que sin un ejemplo que me puedas suministrar no creo entender lo que me quieres enseñar y yo no se ya como expresar mis ideas por lo que creo que estamos dando vueltas en circulos,he tratado de hacer lo que me dices y no me sale nada,te agradezco por querer ayudar un saludo cordial mi estimado

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas