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

Duda con Funcion de Sql

Estas en el tema de Duda con Funcion de Sql en el foro de SQL Server en Foros del Web. Que tal, bueno, apenas me estoy metiendo a crear funciones en el sql server 2005, y no me va tan mal, solo que tengo un ...
  #1 (permalink)  
Antiguo 17/03/2009, 09:17
 
Fecha de Ingreso: septiembre-2005
Mensajes: 1.289
Antigüedad: 18 años, 7 meses
Puntos: 3
Pregunta Duda con Funcion de Sql

Que tal, bueno, apenas me estoy metiendo a crear funciones en el sql server 2005, y no me va tan mal, solo que tengo un par de dudas que no he logrado resolver, quisiera armar un query según se cumpla una serie de condiciones, entonces hice algo como esto:

Código PHP:
set @condicion " or campo3='"+@ui_grupo+"')";
...
INSERT @Plantillas

select campo1
,campo2 from mi_tabla where campo3 <> 'X' @condicion    

RETURN 
por dar un ejemplo, pero pues me marca un error de la variable que esta en el query, entonces mi duda es si esto NO se puede hacer, o que sugerencia me podrian dar? De antemano muchas gracias!!!
__________________
Wow! No se que decir...
  #2 (permalink)  
Antiguo 17/03/2009, 17:10
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 16 años, 9 meses
Puntos: 180
Respuesta: Duda con Funcion de Sql

Revisa QUERY DINAMICO, te pongo un ejemplo:

Declare @MyTabla sysname
Declare @SQLString nvarchar(100)
Declare @SQLWhere nvarchar(50)
Set @MyTabla = 'Cliente'
Set @SQLWhere = 'cliente like '+'%torres%'+'''
Set @SQLString = N'select * from '+@MyTabla+' Where '+@SQLWhere
Set @SQLString = @SQLString+@SQLWhere
Execute sp_executesql @SQLString
  #3 (permalink)  
Antiguo 18/03/2009, 17:05
 
Fecha de Ingreso: septiembre-2005
Mensajes: 1.289
Antigüedad: 18 años, 7 meses
Puntos: 3
Respuesta: Duda con Funcion de Sql

Que tal IISLAS, ya habia encontrado justo algo como lo que me pusiste de ejemplo, solo que ahora quise hacer:

@una_variable = Execute sp_executesql @SQLString;

Pero me marca error, no puedo pasar el resultado a una variable? bueno, y gracias por la respuesta del ejemplo, pero tambien tengo la duda, en

Set @SQLWhere = 'cliente like '+'%torres%'+'''

como estas concatenando? no entendi bien lo que haces ya que usas para todo la comilla siemple y no comprendo como cierras la cadena, sin embargo lo probe como lo tienes y no me marca error :S como funciona ? como io lo puse:

set @condicion = " or campo3='"+@ui_grupo+"')";

si me marca error :S pero me confunde mas tu modo jeje
__________________
Wow! No se que decir...

Última edición por zyon; 18/03/2009 a las 17:12
  #4 (permalink)  
Antiguo 18/03/2009, 17:26
Avatar de Thumper  
Fecha de Ingreso: agosto-2004
Ubicación: Jesús María - Lima - Perú
Mensajes: 270
Antigüedad: 19 años, 8 meses
Puntos: 6
Respuesta: Duda con Funcion de Sql

Tuvo un pequeño error involuntario:

Revisa QUERY DINAMICO, te pongo un ejemplo:

Declare @MyTabla sysname
Declare @SQLString nvarchar(100)
Declare @SQLWhere nvarchar(50)
Set @MyTabla = 'Cliente'
Set @SQLWhere = 'cliente like '+'%torres%'+'''
Set @SQLString = N'select * from '+@MyTabla+' Where ''+@SQLWhere
-- Set @SQLString = @SQLString+@SQLWhere
Execute sp_executesql @SQLString
__________________
Martín Alexis Valdivia S.
-----------------------------
"Quisiéramos cambiar el mundo, pero Dios no nos daría el código fuente." CAP
"Si Saber No Es Un Derecho, Seguro Será Un Izquierdo." WD
  #5 (permalink)  
Antiguo 18/03/2009, 22:43
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 16 años, 9 meses
Puntos: 180
Respuesta: Duda con Funcion de Sql

Muchas gracias por la correcion, amigo Thumper

Zyon, hay una forma de regresar o ingrear variables en sp_executesql, te sugiero leas tu ayuda en linea.
  #6 (permalink)  
Antiguo 19/03/2009, 11:57
 
Fecha de Ingreso: septiembre-2005
Mensajes: 1.289
Antigüedad: 18 años, 7 meses
Puntos: 3
Respuesta: Duda con Funcion de Sql

Bueno, no se como buscarlo, ya intente algo con OUTPUT pero no me funciona :S y tengo una Duda mayor, el Execute sp_executesql funciona en una Funcion de SQL? Sorry, pero no comprendo varias cositas de aqui, sobre todo eso del OUTPUT y ni se si es lo quenecesito y ademas para que el @variable = N'...' eso del 'N' que me indica? Que en la cadena existen variables?
__________________
Wow! No se que decir...

Última edición por zyon; 19/03/2009 a las 12:06
  #7 (permalink)  
Antiguo 19/03/2009, 13:22
 
Fecha de Ingreso: septiembre-2005
Mensajes: 1.289
Antigüedad: 18 años, 7 meses
Puntos: 3
Respuesta: Duda con Funcion de Sql

He leido que solo las funciones y procedimientos extendidos se pueden utilizar entro de una función, si es cierto, habra otra manera de ejecutar un query dinamico?
__________________
Wow! No se que decir...
  #8 (permalink)  
Antiguo 19/03/2009, 13:48
Avatar de GeoAvila
Colaborador
 
Fecha de Ingreso: diciembre-2003
Ubicación: Antigua Guatemala
Mensajes: 4.032
Antigüedad: 20 años, 4 meses
Puntos: 53
Respuesta: Duda con Funcion de Sql

Cita:
Iniciado por zyon Ver Mensaje
He leido que solo las funciones y procedimientos extendidos se pueden utilizar entro de una función, si es cierto, habra otra manera de ejecutar un query dinamico?
el sp_executesql te ejecuta una cadena de texto dentro del motor del sql server esto bien puede se insert update, select, ejecución de un store procedure, etc, cualquier código que vos decidas armar dinámicamente, ya sea que te devuelva datos o no.

nos vemos..
__________________
* Antes de preguntar lee las FAQ, y por favor no hagas preguntas en las FAQ
Sitio http://www.geoavila.com twitter: @GeoAvila
  #9 (permalink)  
Antiguo 19/03/2009, 14:46
 
Fecha de Ingreso: septiembre-2005
Mensajes: 1.289
Antigüedad: 18 años, 7 meses
Puntos: 3
Respuesta: Duda con Funcion de Sql

Halo GeoAvila sorry pero no comprendi tu comentario, te refieres a que no necesito el sp_executesql para ejecutar un query dinamico dentro de mi funcion?
__________________
Wow! No se que decir...
  #10 (permalink)  
Antiguo 19/03/2009, 15:11
Avatar de GeoAvila
Colaborador
 
Fecha de Ingreso: diciembre-2003
Ubicación: Antigua Guatemala
Mensajes: 4.032
Antigüedad: 20 años, 4 meses
Puntos: 53
Respuesta: Duda con Funcion de Sql

Cita:
Iniciado por zyon Ver Mensaje
Halo GeoAvila sorry pero no comprendi tu comentario, te refieres a que no necesito el sp_executesql para ejecutar un query dinamico dentro de mi funcion?
Claro que lo podes usar, es lo más dinámico que podes usar, pero tenes que muy cuidadoso porque el manejo de errores a ese nivel es algo clavado

nos vemos.
__________________
* Antes de preguntar lee las FAQ, y por favor no hagas preguntas en las FAQ
Sitio http://www.geoavila.com twitter: @GeoAvila
  #11 (permalink)  
Antiguo 19/03/2009, 15:31
 
Fecha de Ingreso: septiembre-2005
Mensajes: 1.289
Antigüedad: 18 años, 7 meses
Puntos: 3
Respuesta: Duda con Funcion de Sql

Bien, entonces io quise usar el Proc Almacenado para ejecutar el contenido de la cadena q era un query, pero antes de eso intente ejecutar un query armado con variables pero no pude :s, hice algo como

set @condicion = N' or usuario='+'@ui_grupo+''';
set @numero = (select count(*) from usuarios where usuario='XXX' @condicion );

pero pues me marco error, fuera de eso busque como ejecutar un query sin usar la el PA y no econtre nada, podrias pasarme algun tip de busqueda al menos? una palabra o algo? me ayudaria mucho :(
__________________
Wow! No se que decir...
  #12 (permalink)  
Antiguo 19/03/2009, 16:56
Avatar de Thumper  
Fecha de Ingreso: agosto-2004
Ubicación: Jesús María - Lima - Perú
Mensajes: 270
Antigüedad: 19 años, 8 meses
Puntos: 6
Respuesta: Duda con Funcion de Sql

Puedes colocar el select que deseas que te resulte al final??

Me parece o deseas un select que en tome en algunos casos, todos, ninguno o algunos de los
parametros que le envies.
__________________
Martín Alexis Valdivia S.
-----------------------------
"Quisiéramos cambiar el mundo, pero Dios no nos daría el código fuente." CAP
"Si Saber No Es Un Derecho, Seguro Será Un Izquierdo." WD
  #13 (permalink)  
Antiguo 19/03/2009, 18:27
 
Fecha de Ingreso: septiembre-2005
Mensajes: 1.289
Antigüedad: 18 años, 7 meses
Puntos: 3
Respuesta: Duda con Funcion de Sql

Bueno, seria esto lo que armo :

set @usuario = 'Josue';
set @condicion = N' or usuario='''+@ui_grupo+'''';
set @query = N'select @aux=count(*) from doc_plantillas_seguridad_usr where usuario='''+@usuario+''' '+ @condicion;

el de @aux lo usaba para ibtener el valor del count con el PA "sp_executesql" pero pues es lo que no se puede en la duncion, pero en si esto es uno de los querys que armo, el otro es un poco mayor pero la misma idea...

Por cierto, ya pude hacer lo que quiero en un Procedieminto Almacenado, en si como lo hacia con el output y executesql si lo hacia bien, pero solo era q no sabia q en una funcion no me funcionaba eso jeje, de todos modos quiero saber como ejecuatr una cadena q contiene un query armado si no es molestia :S
__________________
Wow! No se que decir...
  #14 (permalink)  
Antiguo 20/03/2009, 20:17
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 16 años, 9 meses
Puntos: 180
Respuesta: Duda con Funcion de Sql

BOL = Books On Line, ayuda en linea, trae ejemplos de como utilizar SP_EXECUTESQL

Saludos
  #15 (permalink)  
Antiguo 21/03/2009, 20:23
 
Fecha de Ingreso: septiembre-2005
Mensajes: 1.289
Antigüedad: 18 años, 7 meses
Puntos: 3
Respuesta: Duda con Funcion de Sql

ha el detalles es que según se , no se pued eusar el SP_EXECUTESQL dentro de una funcion :S como dije, ya pase todo lo de mi funcion a un Procedimiento Almacenado, pero me queda la duda de como ejecutar un query dinamico en una función, ya aprnedi a usar el SP_EXECUTESQL pero no un equivalente en una funcion :S Sorry por mi necesadad jeje
__________________
Wow! No se que decir...
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 11:30.