admin() and task() Function Return Codes
The admin() and task() functions perform equivalent tasks but produce different types of return codes. Use the admin() function if you want an integer return code, or the task() function if you want a textual return code.
When you run the admin() or task() function, it:
- Performs the specified operation.
- Returns a value that signifies whether the function succeeded or failed.
- Inserts a row into the command_history table of the sysadmin database.
The return codes for the admin() and task() functions indicate whether the function succeeded or failed in different formats:
- The task() function returns a textual message. The message is also inserted into the cmd_ret_msg column in the new row that the task() function inserts into the command_history table.
- The admin() function returns an integer. This
number is also inserted into the cmd_number column in the new
row that the admin() function inserts into the command_history table.
- If this value is greater than zero, the function succeeded, and a new row was inserted into the command_history table.
- If this value is zero, the function succeeded, but Informix® could not insert a new row into the command_history table.
- If this value is less than zero, the function failed, but a new row was inserted into the command_history table.
The operation that the admin() or task() function specifies occurs in a separate transaction from the insertion of the new row into the command_history table. If the command executes successfully, but the insertion into the command_history table fails, the command takes effect, but an online.log error entry indicates the problem.
If the command_history.cmd_number serial
counter is 200 when this function is called, and the command succeeds,
then Informix® executes
the command and returns the integer 201
. If the command
fails, this example returns the value -201
.
EXECUTE FUNCTION task("check extents");
This command instructs
the database server to check the extents, and returns a message indicating
whether the command succeeded or failed.-202
. Suppose that the next SQL
administration API function that the DBSA invokes is this:
EXECUTE FUNCTION admin('create dbspace',
'dbspace2', '/work/CHUNKS/dbspace2', 20M);
If
in this case the command succeeds, the returned value is 203
.
The DBSA can use the following query to examine the two rows of the command_history table
that these calls to the admin() function inserted: SELECT * FROM command_history WHERE cmd_number IN (202,203);
This
query returns two rows: cmd_number 202
cmd_exec_time 2009-04-17 16:26:14
cmd_user informix
cmd_hostname olympia
cmd_executed create dbspace
cmd_ret_status -1
cmd_ret_msg Unable to create file /work/dbspace2
cmd_number 203
cmd_exec_time 2009-04-17 16:26:15
cmd_user informix
cmd_hostname olympia
cmd_executed create dbspace
cmd_ret_status 0
cmd_ret_msg created dbspace number 2 named dbspace2