Frage : In einem SQL-Server gespeichertes Verfahren, wie erkläre ich einen Cursor using, wo Klausel innen als Parameter überschritt?

Using den Eil SQL-Server 2005, möchte ich ein gespeichertes Verfahren verursachen, das einen Cursor herstellt, der auf einer AUSERWÄHLTEN Aussage basiert, die verwendet, WO die Klausel, die innen zum SP als parameter.
The SP geführt, dann weitere UPDATE-Befehle using den Inhalt des cursor.

I gewesen vorher, unterschiedliche Aufgaben, ie
1) zu tun lassen ein SP eine SQL-Aussage using a durchführen tun überschreiten-in, DEM clause
EINGESTELLTES @strSQLCommand = „LÖSCHUNG VON TBL_TempBarcodeData, IN DEM“ + @paramWhereClause
EXEC (@strSQLCommand)

and
2) einen Cursor herstellen, um mit innerhalb einem SP
zu arbeiten, myCursor CURSOR FOR
AUSERWÄHLTES Tran_MasterUniqID, Tran_ThisPaid, Tran_ThisDiscnt, Tran_NewFlagComplete
ERKLÄREN       VON TBL_WORK_TranAllocs
, IN DEM Tran_AddrKind = @paramAddrKind UND TBL_WORK_TranAllocs.Tran_AddrCode = @paramAddrCode UND (TBL_WORK_TranAllocs.Tran_ThisPaid<>0 ODER TBL_WORK_TranAllocs.Tran_ThisDiscnt<>0)

(diese zwei Beispiele sind selbstverständlich ohne Bezug und sind gerade, zu demonstrieren, was ich in der Lage gewesen, in der Vergangenheit bearbeitend innerhalb Überziehschutzanlage zu erhalten.)

This Zeit ich beide diese Arten Tätigkeiten kombinieren möchten, herstellen IE einen Cursor using eine AUSERWÄHLTE Aussage mit a überschreiten-in DEM Klausel te. Meine eigenen Versuche verlassen bis jetzt.

Can, das jedermann mir die SQL-Syntax zeigen, die dieses innerhalb eines SP erzielen?

Many Dank,

Antwort : In einem SQL-Server gespeichertes Verfahren, wie erkläre ich einen Cursor using, wo Klausel innen als Parameter überschritt?

Colin,

Solange Ihre APP das einzige Überschreiten WO Klausel ist, dann Sie vermutlich relativ sicher sind.  Die Ausgabe ist nicht Ihr Code, zwar.  Sql-Einspritzungen sind normalerweise nicht die Art der Sache, die der Entwickler in seine APP aber errichtet eher in die Art der Sache, die etwas böswillige Seele, die nach Ihrer Datenbank stolpert, aus reiner Bösartigkeit heraus tut.

Möglicherweise anstatt zu überschreiten, WO Klausel, Sie die verschiedenen Parameter, zu führen erwägen wünschen konnte, die für den Report festgelegt.  Sie konnten UNGÜLTIGE Werte für gemischte Parameter führen, notfalls.  Dann innerhalb des SP, Ihre Updates durchführen, die nach den Parametern anstelle nach von der „Magie in der Klausel“ gegründet.  Indem Sie die Parameter verwenden, können Sie den Einspritzungangriff ausschließen (meistens weil er eine unzulässige SQL-Aussage verursachen, anstatt, gerade durchzuführen.)

Alles, das ich unterstreiche, ist, dass die Technik Sie zu verwenden) sind in sich selbst unsicher und sollten ein Teil einer Produktionsdatenbankanwendung nie sein verwenden (oder versuchen.  Es verletzt die Richtlinien aller bekannten „optimalen Verfahren“.

Weitere Lösungen  
 
programming4us programming4us