listProcedures
List stored procedures on MySQL, MariaDB, or PostgreSQL, with name search and optional details
List user-defined stored procedures in a database, optionally filtered by search substring and/or expanded with detailed: true. Available on MySQL/MariaDB and PostgreSQL (public schema, PostgreSQL 11+). Not available for SQLite. Results are paginated — see Cursor Pagination for the protocol. The search value (case-insensitive LIKE/ILIKE substring; % matches any sequence, _ a single character) must remain identical across paginated calls for cursor continuity.
In brief mode (default) the response is a sorted JSON array of procedure-name strings. PostgreSQL overloads appear as one entry per overload — duplicate name strings are expected:
{
"entries": ["archive_order", "archive_order_history", "archive_order_history"]
}In detailed mode the response is keyed by procedure signature. The PostgreSQL payload disambiguates overloads via name(arguments); zero-arg procedures key as name() for shape uniformity:
{
"entries": {
"archive_order(order_id integer)": {
"schema": "public",
"name": "archive_order",
"language": "plpgsql",
"arguments": "order_id integer",
"security": "INVOKER",
"owner": "app_user",
"description": "Moves an order into the archive table",
"definition": "CREATE OR REPLACE PROCEDURE public.archive_order(order_id integer) ..."
}
}
}The detailed-mode field set diverges per backend:
- PostgreSQL — keyed by
name(arguments)(overloads disambiguate; zero-arg procedures key asname()). Each value carriesschema,name,language,arguments,security(INVOKER/DEFINER),owner,description(ornullwhen noCOMMENT ON PROCEDURE), anddefinition(the fullpg_get_functiondefoutput forprokind='p'). Brief and detailed pages share the same(proname, oid)row order, so a client can switchdetailedmid-pagination without losing position. ThelistFunctions-only fieldsreturnType,volatility,strict, andparallelSafetyare absent — procedures don't return a value,pg_proc.provolatile/proisstrictare not user-settable for procedures, andproparallelcarries no procedure-level guarantee. - MySQL / MariaDB — keyed by bare procedure name (the engines do not allow procedure overloading). Each value carries
schema,language(typically"SQL"; MariaDB external-language procedures report the external language name),arguments(comma-separatedMODE name typetriples frominformation_schema.PARAMETERSwhereMODEisIN/OUT/INOUT; empty string for zero-parameter procedures),deterministic(boolean),sqlDataAccess(CONTAINS_SQL/NO_SQL/READS_SQL_DATA/MODIFIES_SQL_DATA),security(INVOKER/DEFINER),definer(user@host),description(ornullwhen noCOMMENT),definition(canonical reconstructedCREATE PROCEDUREtext includingDEFINER=in`user`@`host`form; noRETURNSclause), plus the session context active at procedure-creation time:sqlMode,characterSetClient,collationConnection,databaseCollation.returnTypeis absent (procedures have no return type);volatility,parallelSafety, andstrictare absent (no MySQL/MariaDB analogues).owneris renamed todefinerto match the engine's terminology.