Operation Manual

In diesem Beispiel kann das Tag CFSTOREDPROC null oder mehr CFPROCPARAM-Tags enthalten. Ohne Unterstützung der
Schleifenanweisung besteht jedoch keine Möglichkeit, die CFPROCPARAM-Tags in das eingefügte CFSTOREDPROC-Tag einzubeziehen. Wenn
dies als Serververhalten ohne Verwendung der Schleifenanweisung erstellt werden sollte, müssten Sie dieses Beispiel in die folgenden zwei
Mitglieder aufteilen: ein CFSTOREDPROC-Haupt-Tag und ein CFPROCPARAM-Tag, dessen Mitgliedertyp mehrfach ist.
Unter Verwendung der Schleifenanweisung können Sie die gleiche Prozedur wie folgt schreiben:
Hinweis: Zeilenschaltungen nach „@>“ werden ignoriert.
Angenommen, der Benutzer hat die folgenden Parameterwerte in das Dialogfeld „Serververhalten“ eingegeben:
In diesem Fall würde das Serververhalten den folgenden Laufzeitcode in die Seite einfügen:
Hinweis: Parameter-Arrays dürfen außerhalb einer Schleifenanweisung nur als Teil eines bedingten Anweisungsausdrucks verwendet werden.
Variablen „_length“ und „ _index“ der Schleifenanweisung verwenden
Die Schleifenanweisung besitzt zwei integrierte Variablen, die Sie für eingebettete if-Bedingungen verwenden können. Es handelt sich um die
Variablen _length und _index. Die Variable _length wertet die Länge der von der Schleifenanweisung verarbeiteten Arrays aus, während die
Variable _index den aktuellen Index der Schleifenanweisung auswertet. Um sicherzustellen, dass die Variablen nur als Anweisungen und nicht als
die Parameter, erkannt werden, die der Schleife zu übergeben sind, schließen Sie keine von beiden in @@-Zeichen ein.
Ein Beispiel für den Einsatz integrierter Variablen ist ihre Anwendung auf das Attribut import der Seitenanweisung. Bei dem Attribut import müssen
Pakete durch Kommas voneinander getrennt werden. Wenn sich die loop-Anweisung über das gesamte Attribut import erstreckt, würden Sie den
Attributnamen import= nur bei der ersten Iteration der Schleife ausgeben (dabei wären die schließenden Anführungszeichen (") enthalten), und
kein Komma bei der letzten Iteration. Mit der integrierten Variablen können Sie dies wie folgt ausdrücken:
1
2
3
4
5
6
7
8
9
<CFSTOREDPROC procedure="AddNewBook"
datasource=#MM_connection_DSN#
username=#MM_connection_USERNAME#
password=#MM_connection_PASSWORD#>
<CFPROCPARAM type="IN" dbvarname="@CategoryId" value="#Form.CategoryID#"
cfsqltype="CF_SQL_INTEGER">
<CFPROCPARAM type="IN" dbvarname="@ISBN" value="#Form.ISBN#"
cfsqltype="CF_SQL_VARCHAR">
</CFSTOREDPROC>
1
2
3
4
5
6
7
8
9
10
11
<CFSTOREDPROC procedure="@@procedure@@"
datasource=#MM_@@conn@@_DSN#
username=#MM_@@conn@@_USERNAME#
password=#MM_@@conn@@_PASSWORD#>
<@ loop (@@paramName@@,@@value@@,@@type@@) @>
<CFPROCPARAM type="IN"
dbvarname="@@paramName@@"
value="@@value@@"
cfsqltype="@@type@@">
<@ endloop @>
</CFSTOREDPROC>
1
2
3
4
5
procedure = "proc1"
conn = "connection1"
paramName = ["@CategoryId", "@Year", "@ISBN"]
value = ["#Form.CategoryId#", "#Form.Year#", "#Form.ISBN#"]
type = ["CF_SQL_INTEGER", "CF_SQL_INTEGER", "CF_SQL_VARCHAR"]
1
2
3
4
5
6
7
8
9
10
11
<CFSTOREDPROC procedure="proc1"
datasource=#MM_connection1_DSN#
username=#MM_connection1_USERNAME#
password=#MM_connection1_PASSWORD#>
<CFPROCPARAM type="IN" dbvarname="@CategoryId" value="#Form.CategoryId#"
cfsqltype="CF_SQL_INTEGER">
<CFPROCPARAM type="IN" dbvarname="@Year" value="#Form.Year#"
cfsqltype="CF_SQL_INTEGER">
<CFPROCPARAM type="IN" dbvarname="@ISBN" value="#Form.ISBN#"
cfsqltype="CF_SQL_VARCHAR">
</CFSTOREDPROC>
1 <@loop (@@Import@@)@>
733