Question : Est-ce que dans un serveur de SQL procédé stocké, comment je déclare un curseur using où la clause a passé dedans comme paramètre ?

Using le serveur 2005 de SQL exprès, je voudrais créer un procédé stocké qui crée un curseur basé sur un rapport CHOISI qui emploie OÙ la clause passée dedans au PS comme PS de parameter.
The ferait alors d'autres commandes de MISE À JOUR using le contenu du cursor.

I ont précédemment pu faire des tâches séparées, l'ie
1) font exécuter un PS une commande SQL Using a passer-dans OÙ le @strSQLCommand RÉGLÉ par/> de clause
EXEC (@strSQLCommand)/>
and
2) créent un curseur pour fonctionner avec à l'intérieur d'un SP
DÉCLARENT LE CURSEUR FOR
Tran_MasterUniqID CHOISI, Tran_ThisPaid, Tran_ThisDiscnt, Tran_NewFlagComplete
de myCursor       De TBL_WORK_TranAllocs
OÙ Tran_AddrKind = @paramAddrKind ET TBL_WORK_TranAllocs.Tran_AddrCode = temps du

This de @paramAddrCode ET (TBL_WORK_TranAllocs.Tran_ThisPaid<>0 OU TBL_WORK_TranAllocs.Tran_ThisDiscnt<>0) de

(ces deux exemples sont indépendants naturellement, et sont juste de démontrer ce que j'ai pu obtenir travaillant à l'intérieur du SPS dans le passé.) je voudrais combiner ces deux types d'actions, l'IE créent un curseur using un rapport CHOISI avec a passer-dans OÙ clause. Mes propres tentatives ont échoué jusqu'ici. le

Can que n'importe qui me montrent la syntaxe de SQL qui réaliserait ceci à l'intérieur d'un PS ? mercis du

Many,
class= de

Réponse : Est-ce que dans un serveur de SQL procédé stocké, comment je déclare un curseur using où la clause a passé dedans comme paramètre ?

Colin,

Tant que votre $$etAPP est le seul un dépassement OÙ clause, puis vous êtes probablement raisonnablement sûr.  L'issue n'est pas votre code, cependant.  Les injections de SQL ne sont normalement pas la sorte de chose que le réalisateur construit dans son $$etAPP mais, plutôt, la sorte de chose qu'une certaine âme malveillante qui trébuche sur votre base de données fait hors de l'avarice pure.

Peut-être, au lieu du dépassement OÙ la clause, vous pourrait vouloir envisager de passer les divers paramètres qui ont été choisis pour le rapport.  Vous pourriez passer des valeurs NULLES pour des paramètres non sélectionnés, si besoin est.  Puis, dans le PS, exécuter vos mises à jour basées sur les paramètres au lieu de sur la « magie où clause ».  En employant les paramètres, vous pouvez exclure l'attaque d'injection (la plupart du temps parce qu'elle causerait une commande SQL Inadmissible au lieu juste de l'exécution.)

Tout que je précise est que la technique vous employez (ou essayez d'employer) est en soi peu sûr et devrait ne jamais être une partie d'une application de base de données de production.  Il viole les règles de toutes les « pratiques » connues.

Autres solutions  
  •  MS Excel 2007 et pdf - l'exportation vers le pdf prend de longues heures !
  •  Dans le Perl, comment j'ajoute une valeur à la liste, puis le contrôle pour voir si la valeur existent avant d'ajouter une nouvelle valeur
  •  Comment fais j'initialiser de la HP BL460c G6 de san et de la HP XP 240000
  •  Comment fais j'employer une clef de permis de volume sur un ordinateur de HP avec du CD de restauration
  •  Emplacement primaire de deux SCCM dans l'annuaire actif
  •  L'initiateur et la HP D2D de l'iSCSI R2 du serveur 2008 de Windows GERCENT l'issue
  •  Stocker le dossier dans le mysql using connector.net et le champ de goutte
  •  Carte vidéo d'USB - bit 32 sur le matériel travaillant au niveau du bit 64 ?
  •  asp.net que j'essaye de convertir une forme de HTML en forme d'aspx ou ? ce qui jamais. Aide du besoin sur la façon dont à à elle.
  •  Winzip 12 issues de secours du travail ?
  •  
    programming4us programming4us