list_procedures
Retrieve stored procedures, functions, and packages from Oracle Database schemas to understand database structure and available operations.
Instructions
List all stored procedures, functions, and packages
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| owner | No | Filter by schema owner (optional) |
Implementation Reference
- src/oracle_mcp_server/server.py:822-833 (handler)Handler for list_procedures tool call: extracts owner parameter, calls DatabaseInspector.get_procedures, and returns JSON-formatted list of procedures.elif name == "list_procedures": owner = arguments.get("owner") procedures = await self.inspector.get_procedures(owner) return [ TextContent( type="text", text=json.dumps( {"procedures": procedures}, indent=2, default=str ), ) ]
- src/oracle_mcp_server/server.py:695-708 (registration)Tool registration in list_tools(): defines name, description, and input schema for optional owner filter.Tool( name="list_procedures", description="List all stored procedures, functions, and packages", inputSchema={ "type": "object", "properties": { "owner": { "type": "string", "description": "Filter by schema owner (optional)", "default": None, } }, }, ),
- DatabaseInspector.get_procedures: core helper method that queries ALL_OBJECTS for procedures, functions, packages, optionally filtered by owner, formats results as list of dicts.async def get_procedures(self, owner: Optional[str] = None) -> List[Dict[str, Any]]: """Get list of stored procedures and functions""" conn = await self.connection_manager.get_connection() try: cursor = conn.cursor() query = """ SELECT owner, object_name, object_type, status, created, last_ddl_time FROM all_objects WHERE object_type IN ('PROCEDURE', 'FUNCTION', 'PACKAGE') """ params = [] if owner: query += " AND owner = :owner" params.append(owner) query += " ORDER BY owner, object_type, object_name" cursor.execute(query, params) procedures = [] for row in cursor: procedures.append( { "owner": row[0], "object_name": row[1], "object_type": row[2], "status": row[3], "created": row[4].isoformat() if row[4] else None, "last_ddl_time": row[5].isoformat() if row[5] else None, } ) return procedures finally: conn.close()