Cuestión : ¿En un servidor del SQL procedimiento almacenado, cómo declaro un cursor usar donde la cláusula pasó adentro como parámetro?

Usar el servidor 2005 del SQL expreso, quisiera crear un procedimiento almacenado que crea un cursor basado en una declaración SELECTA que utilice DONDE la cláusula pasajera adentro al SP como SP de parameter.
The entonces haría comandos más futuros de la ACTUALIZACIÓN usar el contenido del cursor.

I ha podido previamente hacer las tareas separadas, ie
1) hace que un SP ejecute una declaración de SQL usar a pasar-en DONDE el @strSQLCommand FIJADO/> del clause
EXEC (@strSQLCommand)/>
and
2) crea un cursor para trabajar con dentro de un SP
DECLARA EL CURSOR FOR
Tran_MasterUniqID SELECTO, Tran_ThisPaid, Tran_ThisDiscnt, Tran_NewFlagComplete
del myCursor       De TBL_WORK_TranAllocs
DONDE Tran_AddrKind = el @paramAddrKind Y TBL_WORK_TranAllocs.Tran_AddrCode = tiempo del

This del @paramAddrCode Y (TBL_WORK_TranAllocs.Tran_ThisPaid<>0 O TBL_WORK_TranAllocs.Tran_ThisDiscnt<>0) del

(estos dos ejemplos están sin relación por supuesto, y son apenas demostrar cuál he podido conseguir de trabajo dentro del SPS en el pasado.) yo quisieran combinar ambos estos tipos de acciones, el IE crea un cursor usar una declaración SELECTA con a pasar-en DONDE cláusula. ¿Mis propias tentativas han fallado hasta el momento. el

Can que cualquier persona me demuestra el sintaxis del SQL que alcanzaría esto dentro de un SP? gracias del

Many,
class= del

Respuesta : ¿En un servidor del SQL procedimiento almacenado, cómo declaro un cursor usar donde la cláusula pasó adentro como parámetro?

Colin,

Mientras esté el único un paso su app DONDE cláusula, después usted es probablemente razonablemente seguro.  La edición no es su código, aunque.  Las inyecciones del SQL no son normalmente la clase de cosa que el revelador se incorpora a su app pero, algo, a la clase de cosa que una cierta alma malévola que tropieza sobre su base de datos hace fuera de meanness puro.

Quizás, en vez del paso DONDE la cláusula, usted pudo querer considerar pasar los varios parámetros que fueron seleccionados para el informe.  Usted podría pasar los valores NULOS para los parámetros no seleccionados, si se da el caso.  Entonces, dentro del SP, ejecutar sus actualizaciones basadas sobre los parámetros en vez sobre de la “magia donde cláusula”.  Usando los parámetros, usted puede imposibilitar el ataque de la inyección (sobre todo porque causaría una declaración de SQL inválida en vez apenas de la ejecución.)

Todo lo que estoy precisando es que la técnica usted está utilizando (o está intentando utilizar) es intrínsecamente inseguro y debe nunca ser una parte de un uso de base de datos de la producción.  Viola las reglas de todas las “mejores prácticas sabidas”.

Otras soluciones  
 
programming4us programming4us