Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General »

Condicional nula en caso de ...

Estas en el tema de Condicional nula en caso de ... en el foro de Bases de Datos General en Foros del Web. Buend ía espero me puedan apoyar, estoy trabajando con sql anywhere realmente no encuentro ayuda en ningún lado y tengo 2 días trabajando con este ...
  #1 (permalink)  
Antiguo 08/05/2015, 11:15
 
Fecha de Ingreso: julio-2011
Mensajes: 14
Antigüedad: 12 años, 9 meses
Puntos: 0
Pregunta Condicional nula en caso de ...

Buend ía espero me puedan apoyar, estoy trabajando con sql anywhere realmente no encuentro ayuda en ningún lado y tengo 2 días trabajando con este pedazo de código.

Código MySQL:
Ver original
  1. ALTER PROCEDURE "comercia"."CotizBus_stabCotizaciones"(@siEmpresa smallint, @siAlmacen smallint
  2. ,@biFolio bit,  @inFolio integer , @biCliente bit, @inCliente integer  
  3. ,@biOficina bit, @siOficina smallint , @biVendedor bit, @inVendedor integer
  4. , @biFecha bit, @sdFechaIni smalldatetime,@sdFechaFin smalldatetime, @tiNivelCliente tinyint, @inUsuario integer)
  5.     declare @vcQuery long varchar;
  6.     declare @vcFechaIni varchar(20);
  7.     declare @vcFechaFin varchar(20);
  8.     declare @Prepedido integer
  9.     set @vcFechaIni=''''+convert(varchar(20),dateformat(@sdFechaIni,'yyyy/mm/dd hh:mm'))+'''';
  10.     set @vcFechaFin=''''+convert(varchar(20),dateformat(@sdFechaFin,'yyyy/mm/dd hh:mm'))+'''';
  11.        
  12.     set @vcQuery=' SELECT Cotizacion=t1.inCotLlave , Fecha=DATEFORMAT(t1.sdCotFecha,''dd/mm/yyyy'') ';
  13.     set @vcQuery=@vcQuery+' ,Cliente=t1.inCliLlave,Nombre=t2.vcCliNombre, Nivel=t4.vcNicClave,Cuenta=t3.chUsuCuenta,Pedido=t1.inPedLlave,Cancelado=convert(integer,t1.biCotCancelado),Almacen=t1.siAlmLlave, Prepedido (isnull(t8.inCotLlave,0))';
  14.     set @vcQuery=@vcQuery+' FROM tabCotizaciones t1,catClientes t2,catUsuarios t3, catNivelesClientes t4, tabPrepedidos t8';
  15.     set @vcQuery=@vcQuery+' WHERE t1.siAlmLlave = ' + convert(varchar(10),@siAlmacen);
  16.     set @vcQuery=@vcQuery+' AND t4.siEmpLlave = ' + convert(varchar(10),@siEmpresa);
  17.     set @vcQuery=@vcQuery+' AND t3.inUsuLlave = t1.inUsuLlave ';
  18.     set @vcQuery=@vcQuery+' AND t2.inCliLlave = t1.inCliLlave ';
  19.     set @vcQuery=@vcQuery+' AND t2.siNicLlave = t4.siNicLlave ';
  20.    
  21.     if @biFolio > 0 then
  22.         set @vcQuery=@vcQuery+' AND t1.inCotLlave = '+convert(varchar(10),@inFolio)
  23.     end if;
  24.     if @biOficina > 0 then
  25.         set @vcQuery=@vcQuery+' AND t3.siOfiLlave = '+convert(varchar(10),@siOficina)
  26.     end if;
  27.     if @biCliente > 0 then
  28.         set @vcQuery=@vcQuery+' AND t1.inCliLlave = '+convert(varchar(10),@inCliente)
  29.     end if;
  30.     if @biVendedor > 0 then
  31.         set @vcQuery=@vcQuery+' AND t3.inUsuLlave = '+convert(varchar(10),@inVendedor) 
  32.     end if;
  33.     if @biFecha > 0 then
  34.         --Significa que Voy a Buscar por Fecha.        
  35.         set @vcQuery=@vcQuery+' AND t1.sdCotFecha BETWEEN '+@vcFechaIni+' AND '+@vcFechaFin
  36.     end if;
  37.     if @tiNivelCliente > 0 then
  38.         set @vcQuery=@vcQuery+' AND t2.siNicLlave  = '+convert(varchar(10),@tiNivelCliente)
  39.     end if;
  40.         set @vcQuery=@vcQuery+' AND t1.inCotLlave = ISNULL(t8.inCotLlave,t1.inCotLlave)';--------------------------------------------------En esta línea quiero que salga el mismo de la tabla 8 pero si no existe el registro me lo ponga igual, esto para que no desaparezca ninguna busqueda, ya tenía ese código hecho y sé que si se puede pero no se donde quedó y no se usar joins.
  41.     set @vcQuery=@vcQuery+' ORDER BY t1.inCotLlave';
  42.    
  43.     execute immediate with result set on @vcQuery;


Gracias espero puedan ayudarme

Última edición por gnzsoloyo; 08/05/2015 a las 11:31
  #2 (permalink)  
Antiguo 08/05/2015, 11:32
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: Condicional nula en caso de ...

Cita:
Gracias espero puedan ayudarme
Bueno, la primera ayuda es decirte que ese código no es de MySQL... así que no podrás aplicarlo jamás en este DBMS.
Los lenguajes procedurales entre diferentes DBMS son incompatibles.

Estás trabajando en MySQL o SQL Server?
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 08/05/2015, 11:53
 
Fecha de Ingreso: julio-2011
Mensajes: 14
Antigüedad: 12 años, 9 meses
Puntos: 0
Respuesta: Condicional nula en caso de ...

Es SQL Anywhere de SAP pero no puedo realizar lo que quiero, realmente siento que mi lógica si está fallando pero como comento ya lo había hecho y no sé como hacerlo de nuevo.
  #4 (permalink)  
Antiguo 08/05/2015, 12:16
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: Condicional nula en caso de ...

Creo que no me entendiste: No es que la lógica esté bien o mal, sino que el stored procedure tiene una sintaxis totalmente incompatible con MySQL.

No existe un estándar de lenguaje procedural, por lo que escribir un stored procedure para MySQL, Oracle o SQL Server, por ejemplo, tienen sintaxis diferentes e incompatibles.

En tu caso por lo que mencionas, estás usando Sybase, que no es ninguno de ellos, por lo que tendrás que acudir a la documentación oficial del DBMS en cuestión:
http://infocenter.sybase.com/help/in...702708068.html
http://infocenter.sybase.com/help/in...453581026.html

Muevo tu post al foro de Bases de Datos General, ya que no se trata de un tema de MySQL, y no tenemos un subforo de Sybase.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Etiquetas: condición, mysql, sql
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 05:23.