Select con variables en sp

02/09/2005 - 00:55 por Alex | Informe spam
Hola amigos,
estoy tratando de ejecutar este codigo y tengo problemas con las comillas,
no tengo idea de como hacer par que se ejecute la sgte. sentecia: Select *
from compras where idtipodocumento='01', el problema es como reemplazo los
apostrofes.


declare @tabla varchar(10), @tpo char(2)
declare @cad varchar(500)
set @tabla='COMPRAS'
set @tpo='01'
set @cad=('select * from '+@tabla+' where idtipodocumento="'+@tpo+'"')
exec (@cad)

Espero por favor su valiosa colaboración. Gracias.

Atte.
Alex Carmen Z.
Peru

Preguntas similare

Leer las respuestas

#6 Alejandro Mesa
02/09/2005 - 16:14 | Informe spam
Maxi,

No veo a que biene esa aclaracion. En ningun momento se ha dicho que sql
server no mantiene en cache la sentencia ejecutada por sp_executesql.

Si envias la sentencia desde la aplicacion cliente (como recomienda Ivan),
implicaria muchas mas cosas en contra y no solo hablo de seguridad. Tener el
codigo de la bd de forma centralizada, como son los sp, ayuda a que cuando se
necesite una modificacion, esta se haga de forma transparente para la
aplicacion cliente. Si armas la sentencia de forma dinamica en la aplicacion
cliente, entonces existe mayor probabilidad de que se pueda inyectar codigo
hacia sql server.

Ademas de seguridad, existen otros puntos donde el uso de sql dinamico no
nos ayuda, como por ejemplo el hecho de que no se hace una referencia directa
a los objetos y por lo tanto sql server no puede llevar un control de
dependencias. El clasico ejemplo es:

create procedure dbo.usp_p1
@table sysname
as
set nocount on

declare @sql nvarchar(4000)

set @sql = N'select c1, c2, c3 from' + quotename(@table)

exec sp_execute @sql

return @@error
go

En estos casos, ni se reusa el plan de ejecucion, ni se actualiza las
dependencias en sql server sobre las tablas o vistas referenciadas por el sp.

Mostrar la cita
No se que es un ORM. Habras querido decir CRM (Customer Relationship
Managment)?

Hago una invitacion extensiva a leer el articulo adjuntado anteriormente
"Las virtudes y maldades del SQL dinámico".


AMB



"Maxi" wrote:

Mostrar la cita
#7 Maxi
02/09/2005 - 16:17 | Informe spam
Hola, sip, tenes razon!! te entendi que por performance era malo usar
sql-dinamico en un SP, mil disculpas


Salu2
Maxi


"Alejandro Mesa" escribió en el
mensaje news:
Mostrar la cita
#8 Alejandro Mesa
02/09/2005 - 16:35 | Informe spam
Maxi,

No son necesarias las disculpas, solo hice una aclaracion.

Saludos,

AMB

"Maxi" wrote:

Mostrar la cita
#9 Maxi
02/09/2005 - 16:40 | Informe spam
Ahh, me olvide, un ORM es un mapeador de objetos hacia una Base de datos, o
sea, transforma el mundo de los objetos en mappers para el mundo relacional


Salu2
Maxi


"Alejandro Mesa" escribió en el
mensaje news:
Mostrar la cita
#10 Alejandro Mesa
02/09/2005 - 17:11 | Informe spam
Maxi,

Me confundi con las siglas, pues estoy estudiando la metodologia de Terry
Halpin para modelar bases de datos relacionales en la etapa conceptual.

ORM
http://www.orm.net/index.html


AMB

"Maxi" wrote:

Mostrar la cita
Ads by Google
Search Busqueda sugerida