Armar SQL y despues ejecutarlo

24/09/2004 - 22:33 por Yan Carlos | Informe spam
Hola necesito la ayuda de Uds por favor...
Estoy armando una sentencia SQL y concatenandola en una variable hasta que
tenga la estructura adecuada... una vez que tengo toda la sentencia como la
ejecuto... algo asi
Set @misql = 'SELECT * '
Set @misql=@misql + 'FROM Tabla'
Como veo el resultado de la consulta que tiene @misql
Muchas gracias, espero su pronta respuesta...

Saludos
YAN

Preguntas similare

Leer las respuestas

#16 MAXI
25/09/2004 - 16:05 | Informe spam
Hola, poder lo podes hacer con un convert

SELECT CASE WHEN LEN(CONVERT(VARCHAR(2),MONTH(GETDATE()))) = 1 THEN
'0' + CONVERT(VARCHAR(2),MONTH(GETDATE())) ELSE
CONVERT(VARCHAR(2),MONTH(GETDATE())) END

Suerte




Maxi

Buenos Aires - Argentina
Desarrollador .NET 3 Estrellas
Microsoft User Group (MUG)
Mail: Maxi_accotto[arroba]speedy.com.ar

Msn Messager:

"Yan Carlos" escribió en el mensaje
news:
Hola Maxi... esa tabla ya estaba creada cuado llegue a trabajar por eso no
puedo hacer nada...

Ventas200409 = 09 es setiembre, pero con la funcion month() yo obtengo 9,
por eso quiero darle el formato de 09 y poner algo asi:
Ventas + Year(Getdate()) + format(Month(Getdate()),'00')


"MAXI" escribió en el mensaje
news:
mmm, sabes que ese diseño no me gusta :(, es muy dificil de mantener y


poder
hacer algo :(. Porque no hacerlo con los registros? no por columna?

De todas formas no entiendo porque el 09 en el formato :-s




Maxi

Buenos Aires - Argentina
Desarrollador .NET 3 Estrellas
Microsoft User Group (MUG)
Mail: Maxi_accotto[arroba]speedy.com.ar

Msn Messager:

"Yan Carlos" escribió en el mensaje
news:
> Hola Maxi... sabes que tengo que armar mi sql asi, porque tengo una


tabla
> (se que no es la mejor forma) que tiene estos campos:
>
> Venta200401=Venta del año 2004 del mes 01(Enero)
> Venta200402=Venta del año 2004 del mes 02(Febrero)...
> y asi creo una columna por mes...
> por eso es que tengo que concatenar y darle un formato 09 si quiero ver
> las
> ventas del mes de Julio...
>
> Alguna idea?
>
> "Maxi" escribió en el mensaje
> news:
>> Yan, esas cosas las deberias hacer en la capa de presentacion y no en


la
>> BDD.
>>
>>
>> Salu2
>> Maxi
>> Buenos Aires - Argentina
>> Desarrollador Microsoft 3 Estrellas .NET
>> Nunca consideres el estudio como una obligación sino como
>> una oportunidad para penetrar en el bello y maravillosos
>> mundo del saber.
>> - Albert Einstein
>>
>>
>>
>> "Yan Carlos" escribió en el


mensaje
>> news:%
>> > gracias por la rapidez de sus respuestas salio OK otra consulta
>> > como
>> le
>> > puedo dar un formato por ejemplo al numero 9 para que sea 09, algo


como
> el
>> > format en visual basic..
>> > Gracias
>> > "Ivan Mostacero" escribió en el mensaje
>> > news:
>> > > asi podria ser : Exec(@misql)
>> > > saludos.
>> > > "Yan Carlos" wrote in
>> > > message
>> > > news:
>> > > > Hola necesito la ayuda de Uds por favor...
>> > > > Estoy armando una sentencia SQL y concatenandola en una
>> > > > variable
>> hasta
>> > > que
>> > > > tenga la estructura adecuada... una vez que tengo toda la


sentencia
>> como
>> > > la
>> > > > ejecuto... algo asi
>> > > > Set @misql = 'SELECT * '
>> > > > Set @misql=@misql + 'FROM Tabla'
>> > > > Como veo el resultado de la consulta que tiene @misql
>> > > > Muchas gracias, espero su pronta respuesta...
>> > > >
>> > > > Saludos
>> > > > YAN
>> > > >
>> > > >
>> > >
>> > >
>> >
>> >
>>
>>
>>
>> Outgoing mail is certified Virus Free.
>> Checked by AVG anti-virus system (http://www.grisoft.com).
>> Version: 6.0.764 / Virus Database: 511 - Release Date: 15/09/2004
>>
>>
>
>






Respuesta Responder a este mensaje
#17 Leonardo Azpurua
25/09/2004 - 16:07 | Informe spam
"MAXI" escribió en el mensaje
news:%

Pero proba, a la variable de entrada ponele:

';drop table customers;' y?



Digamos:

Public Sub LoadCliente(sCodigo As String)

s = "SELECT * FROM Clientes WHERE Codigo = " & StringDB(sCodigo) & ";"
...
End Sub

sCodigo = ';drop table customers;'
StringDB(sCodigo) = ' ' ';drop table customers;' ' '
s = SELECT * FROM Clientes WHERE Codigo = ' ' ';drop table customers;' ' ';

Los espacios entre los apostrofes no van: los puse para mejorar la claridad.

¿Hay "inyección" en s?

Salud!

Leonardo
mvp vb
Respuesta Responder a este mensaje
#18 MAXI
25/09/2004 - 16:17 | Informe spam
Leo, te invito a que leas este link

http://www.sommarskog.se/dynamic_sql.html


Aqui vas a encontrar todo lo que expongo, y hay hasta ejemplos de injeccion
de codigo!! en tu ejemplo por logica no pasa nada, pero te invito a que leas
este articulo y hagas tu propio analisis!!

Yo ya te di mis argumentos porque no usar Sql-Dinamico, ahora queda en ti
usarlo o no :-)




Maxi

Buenos Aires - Argentina
Desarrollador .NET 3 Estrellas
Microsoft User Group (MUG)
Mail: Maxi_accotto[arroba]speedy.com.ar

Msn Messager:

"Leonardo Azpurua" <l e o n a r d o (arroba) m v p s (punto) o r g> escribió
en el mensaje news:

"MAXI" escribió en el mensaje
news:%

Pero proba, a la variable de entrada ponele:

';drop table customers;' y?



Digamos:

Public Sub LoadCliente(sCodigo As String)

s = "SELECT * FROM Clientes WHERE Codigo = " & StringDB(sCodigo) & ";"
...
End Sub

sCodigo = ';drop table customers;'
StringDB(sCodigo) = ' ' ';drop table customers;' ' '
s = SELECT * FROM Clientes WHERE Codigo = ' ' ';drop table customers;' '
';

Los espacios entre los apostrofes no van: los puse para mejorar la
claridad.

¿Hay "inyección" en s?

Salud!

Leonardo
mvp vb


Respuesta Responder a este mensaje
#19 El principiante
25/09/2004 - 19:36 | Informe spam

Yo te recomendaria que no, que armes la sentencia dinamica desde la
aplicacion y que uses roles de aplicacion, con esto vas a poder tener el
sistema seguro y que sea optimo.




Eso quiere decir que si en una aplicacion que usa ODBC yo armo dinamicamente
un SELECT aun sea complicado y posteo el comando directamente hacia el
servidor no tengo este problema que tendria al hacerlo en un SP ??


Que son roles de aplicacion ?


Gracias amigo
Respuesta Responder a este mensaje
#20 MAXI
26/09/2004 - 04:36 | Informe spam
Hola, no lo tienes porque no usas Sql-Dinamico :-p

Roles de aplicacion: aca va un articulo que escribi sobre el tema

http://www.configuracionesintegrale...p?articulo$4

Suerte




Maxi

Buenos Aires - Argentina
Desarrollador .NET 3 Estrellas
Microsoft User Group (MUG)
Mail: Maxi_accotto[arroba]speedy.com.ar

Msn Messager:

"El principiante" escribió en el mensaje
news:
>
Yo te recomendaria que no, que armes la sentencia dinamica desde la
aplicacion y que uses roles de aplicacion, con esto vas a poder tener el
sistema seguro y que sea optimo.




Eso quiere decir que si en una aplicacion que usa ODBC yo armo
dinamicamente
un SELECT aun sea complicado y posteo el comando directamente hacia el
servidor no tengo este problema que tendria al hacerlo en un SP ??


Que son roles de aplicacion ?


Gracias amigo


Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida