Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > MS SQL Server
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

 
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 20-12-2011
Avatar de Cabanyaler
Cabanyaler Cabanyaler is offline
Miembro
 
Registrado: jun 2003
Ubicación: País Valencià
Posts: 339
Poder: 21
Cabanyaler Va por buen camino
Unhappy Ctrl Flujo en Transact SQL

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 [-]
/* Retorna tots els articles i tots els seus atributs d'un centre
A rao del valor del parametre  @TipoInforme retorna:
@TipoInforme = 0 Articles que tenen el valor del preu mitjà  = 0
@TipoInforme = 1 Articles que tenen el valor del preu mitjà <> 0
@TipoInforme = 2 Tots els Articles independientment del valor del preu mitjà */

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
__________________
El meu país és tan petit, que des de dalt d'un campanar es pot veure el campanar veí.
Responder Con Cita
 



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
copiando componentes y eventos - Ctrl+C Ctrl-V StartKill Varios 5 20-12-2008 15:42:33
Transact SQL Procedimientos Alamacenados!! Yun-i MS SQL Server 5 10-01-2008 15:33:29
campo validado no acepta ctrl + v ctrl + c vroa74 Varios 0 10-09-2007 17:03:15
delphi 2005 ctrl-c, ctrl-v, ctrl-x zero.ax Varios 3 15-08-2007 16:40:28
Consejo sobre flujo Supermagayin Varios 4 30-08-2006 22:28:27


La franja horaria es GMT +2. Ahora son las 11:48:22.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi