Questione : In un assistente di SQL procedura immagazzinata, come dichiaro un cursore using dove la clausola è passato dentro come parametro?

Using l'assistente 2005 di SQL espresso, vorrei generare una procedura immagazzinata che genera un cursore basato su una dichiarazione PRESCELTA che usa DOVE la clausola passata dentro allo PS come PS di parameter.
The allora avrebbe fatto ulteriori ordini dell'AGGIORNAMENTO using il contenuto del cursor.

I precedentemente ha potuta fare le mansioni separate, lo ie
1) fa eseguire uno PS una dichiarazione di SQL using la a passare-in DOVE il @strSQLCommand REGOLATO/> del clause
EXEC (@strSQLCommand)/>
and
2) genera un cursore per funzionare con all'interno di uno SP
DICHIARA IL CURSORE FOR
Tran_MasterUniqID PRESCELTO, Tran_ThisPaid, Tran_ThisDiscnt, Tran_NewFlagComplete
di myCursor       Da TBL_WORK_TranAllocs
DOVE Tran_AddrKind = il @paramAddrKind E TBL_WORK_TranAllocs.Tran_AddrCode = tempo del

This del >0/>hisDiscnt<0/>ThisPaid<>
(questi due esempi sono indipendenti naturalmente e sono appena di dimostrare che cosa ho potuto ottenere funzionante all'interno dello SPs nel passato.) io vorrebbero unire entrambi questi tipi di azioni, lo IE genera un cursore using una dichiarazione PRESCELTA con la a passare-in DOVE clausola. Miei propri hanno fallito finora. il

Can che chiunque mi mostra la sintassi di SQL che realizzerebbe questa all'interno di uno PS? ringraziamenti del

Many,
class= del

Risposta : In un assistente di SQL procedura immagazzinata, come dichiaro un cursore using dove la clausola è passato dentro come parametro?

Colin,

Finchè il vostro app è l'unico un passaggio DOVE clausola, quindi siete probabilmente ragionevolmente sicuro.  L'edizione non è il vostro codice, comunque.  Le iniezioni di SQL non sono normalmente la specie della cosa che lo sviluppatore costruisce nel suo app ma, piuttosto, nella specie della cosa che una certa anima cattiva che inciampa sulla vostra base di dati fa da meanness puro.

Forse, invece di passare DOVE la clausola, voi potrebbe volere studiare la possibilità di passare i vari parametri che sono stati selezionati per il rapporto.  Potreste passare i valori NULLI per i parametri non selezionati, se necessario.  Allora, all'interno dello PS, eseguire i vostri aggiornamenti basati sui parametri anziché “sulla magia dove clausola„.  Usando i parametri, potete precludere l'attacco dell'iniezione (principalmente perché causerebbe una dichiarazione di SQL non valida invece di appena esecuzione.)

Tutto che stia precisando è che la tecnica state usando (o stanno provando ad usare) siete inerentemente pericoloso e dovreste mai non essere una parte di un'applicazione di base di dati di produzione.  Viola le regole di tutte le “pratiche ottimali„ conosciute.

Altre soluzioni  
 
programming4us programming4us