Pergunta : Em um usuário do SQL procedimento armazenado, como eu declaro um cursor using onde a cláusula passou dentro como um parâmetro?

Using o usuário 2005 do SQL expresso, eu gostaria de criar um procedimento armazenado que criasse um cursor baseado em uma indicação SELETA que usasse ONDE a cláusula passada dentro ao SP como um SP de parameter.
The faria então uns comandos mais adicionais da ATUALIZAÇÃO using o índice do cursor.

I tem podido previamente fazer as tarefas, o ie
1) manda um SP executar uma indicação de SQL using a passar-em ONDE o @strSQLCommand AJUSTADO/> do clause

and
2 do @paramWhereClause
EXEC (@strSQLCommand)) cria um cursor para trabalhar com dentro de um SP
DECLARA O CURSOR FOR
Tran_MasterUniqID SELETO do myCursor, Tran_ThisPaid, Tran_ThisDiscnt, Tran_NewFlagComplete
de TBL_WORK_TranAllocs
ONDE Tran_AddrKind = o @paramAddrKind E TBL_WORK_TranAllocs.Tran_AddrCode = tempo do

This do @paramAddrCode E (TBL_WORK_TranAllocs.Tran_ThisPaid<>0 OU TBL_WORK_TranAllocs.Tran_ThisDiscnt<>0) do

(estes dois exemplos são não relacionados naturalmente, e são apenas demonstrar o que eu pude começ de trabalho dentro do SPs no passado.) mim gostariam de combinar ambos estes tipos de ações, IE cria um cursor using uma indicação SELETA com o a passar-em ONDE cláusula. Minhas próprias tentativas falharam até aqui. o

Can que qualquer um me mostra a sintaxe do SQL que conseguiria esta dentro de um SP? agradecimentos do

Many,
class= do

Resposta : Em um usuário do SQL procedimento armazenado, como eu declaro um cursor using onde a cláusula passou dentro como um parâmetro?

Colin,

Contanto que seu app for a única uma passagem ONDE cláusula, a seguir você é provavelmente razoavelmente seguro.  A edição não é seu código, embora.  As injeções do SQL não são normalmente a sorte da coisa que o colaborador constrói em seu app mas, um pouco, na sorte da coisa que alguma alma maliciosa que tropeça em cima de sua base de dados faz fora do meanness puro.

Talvez, em vez da passagem ONDE a cláusula, você pôde querer considerar passar os vários parâmetros que foram selecionados para o relatório.  Você poderia passar valores NULOS para parâmetros unselected, se a necessidade fosse.  Então, dentro do SP, executar suas atualizações baseadas nos parâmetros em vez em cima da “mágica onde cláusula”.  Usando os parâmetros, você pode impossibilitar o ataque da injeção (na maior parte porque causaria uma indicação de SQL inválida em vez apenas da execução.)

Tudo que eu estou indic é que a técnica você se está usando (ou se estão tentando se usar) é inerente inseguro e deve nunca ser uma parte de uma aplicação de base de dados da produção.  Viola as réguas de todas as “melhores práticas conhecidas”.

Outras soluções  
 
programming4us programming4us