Hola amigos, una duda que he probado mil veces y no consigo implementar con éxito y no me reporta ningún tipo de error de sintaxis, ni en compilación, ni en el servidor SQL Server.
Deseo por medio de una llamada a un Store Procedure SP, la ejecución de un código o parte del mismo controlándolo con sentencias IF.
En otras ocasiones he mandado un parametro de tipo bit y con una sentencia IF ELSE al ser los tipos de valor a tomar por el tipo bit [0,1] ha funcionado, pero con el siguiente SP, no lo consigo.
Mi duda es si puedo utilizar dentro del Transct-SQL y en sus sentencias IF valores pasados por parámetro, en este ejemplo el
@TipoInforme para este cometido que se observa en el código.
El tipo del parámetro en el ADOSP es
ftString, mientras que en en lado servidor dentro del SP como se observa es del tipo
char.
Lo he probado también con tipo
Varchar(1) en el SP, e incluso en el modo
int en el servidor y como
ftInteger en el ADOSP, pero tampoco me funcionó.
Si sabéis como condicionar el flujo dentro del SP a raíz del valor de algun parámetro, en este ejemplo el
@TipoInforme, os lo agradecería.
Código SQL
[-]
CREATE PROCEDURE ADOSP_InventarioArticulos
@TipoInforme char, @Centro_sp varchar(3)
AS
if (@TipoInforme = '0') -- Articles que tenen el valor del preu mitjà = 0
begin
SELECT DISTINCT *
FROM Artic
WHERE
(Pvp_art = 0) AND
(Centro_Art = @Centro_sp)
end
else
begin
if (@TipoInforme = '1') -- Articles que tenen el valor del preu mitjà <> 0
begin
SELECT DISTINCT *
FROM Artic
WHERE
(Pvp_art <> 0 ) AND
(Centro_Art = @Centro_sp)
end
else
begin
if (@TipoInforme = '2') -- Tots els Articles independientment del valor del preu mitjà */
begin
SELECT DISTINCT *
FROM Artic
WHERE
(Centro_Art = @Centro_sp)
end
end
end
GO