The remote stored procedure is always created on the server that executes the procedure, not on the server that calls the procedure. The calling server does not know the content of the stored procedure that it calls remotely, only the information that is specified in the CALL statement itself, see CALL.
For example, the following CALL statement includes the procedure name, some parameter values, and the name of the replica on which the procedure is to be executed:
CALL foo(param1, param2) AT replica1
The stored procedure is not registered with the caller. This means that the caller calls the procedure blindly, without even knowing if it exists. If the caller tries to call a procedure that does not exist, the caller will get an error message.
Dynamic parameter binding is supported. For example, the following statement is valid:
CALL myproc(?, ?) AT myreplica1;
Calls to the stored procedure are not buffered or queued. If you call the stored procedure and the procedure does not exist or is inaccessible, the call does not wait until the stored procedure is available. This is important to know when using the "Sync Pull Notify" (push synchronization) feature, see Sync Pull Notify.
Note You can only list one server definition per CALL. If you want to notify multiple replica databases, for example, then you must call each of them separately. You can, however, create a stored procedure that contains multiple CALL statements, and then simply make a single call to that procedure.