Das sind nun 2 ganz verschiedene Dinge!
ActiveX:
Hier werden dir nur Möglichkeiten der Programmaufrufe gegeben.
Die Parameter legst du selber zur Laufzeit fest und zwar unabhängig davon, ob sie zum Programm passen oder nicht. Wenn die Parameter dann falsch sind hast du Pech gehabt.
Du kannst sowohl Einzelparameter als auch Strukturen definieren. Und für die Umwandlung ASCII/EBCDIC bist du auch noch selber verantwortlich.

SQL:
Der Standard verlangt explizite Deklarationen von Prozeduren und Funktionen.
Die SQL-Runtime prüft nun sogar ob die übergebenen Parameter zur Deklaration passt oder ggf. auch konvertierbar sind.
Durch sog. "Überladung" kann ich den selben Namen mit anderen Parametertypen mehrfach verwenden. SQL erkennt und findet den richtigen Aufruf.
Da die IBM nun mal die Faulheit der AS/400-Programmierer kennt hat sie einen vereinfachten Aufruf ermöglicht, der mit dem Standard aber auch gar nichts zu tun hat.
Hier kann man also ebenso Programme aufrufen. Allerdings sind hier nur einfache Parameter (gepackte Dezimale und Zeichen) erlaubt da durch den Text das Format bestimmt wird.
Also eine schöne aber eine absolut unsichere und gefährliche Sache.
Vorteil der Deklaration ist aber z.B. bei Funktionen die Verwendung in fast jedem SQL, was du bei ActiveX eben nicht kannst.

Beispiele findest du genug in den Handbüchern und im Forum.