Die Geschwindigkeit liegt in der einmaligen Interpretation des Commands mit der anschließend beliebig häufigen Ausführung begründet.
Machst du jedes mal ein neues Command-Objekt, muss die AS/400 jedes mal die Syntax prüfen sowie die Tabelle und Felder ermitteln und checken sowie das Kommando vorbereiten (Preparen) bevor es zur Ausführung kommt.
Es reicht, diesen Vorgang genau 1 Mal zu machen, so dass die nachfolgenden Ausführungen eben beschleunigt werden.
Dies gilt i.Ü. grundsätzlich für jeden SQL-Befehl.

Übrigens, bei deiner Methodik reicht es, eine lokale Variable innerhalb der Prozedur zu verwenden.
Zusätzliche solltest du "Using" verwenden und in einen Try/Catch einbetten.
Using hat den Vorteil, dass das Objekt auch im Fehlerfall (catch) oder bei return automatisch zerstürt wird, da die Dispose-Methode aufgerufen wird.
http://msdn.microsoft.com/de-de/library/yh598w02.aspx

Aber ich denke, du hast hier zur Vereinfachung diese Code-Teile nur ausgeblendet.