[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"question-jdbc-kak-vyzvat-khranimuyu-protseduru":3},{"id":4,"slug":5,"topicId":6,"topicSlug":7,"topicName":8,"topicEmoji":9,"question":10,"answer":11,"codeLang":12,"codeSrc":12,"important":12,"commonMistakes":12,"modernUsage":12,"difficulty":13,"tags":14,"related":17,"progress":18,"seo":19},1176,"kak-vyzvat-khranimuyu-protseduru",36,"jdbc","JDBC","🔌","Как вызвать хранимую процедуру","Хранимая процедура — это именованный набор SQL-операторов, хранящийся на сервере базы данных и вызываемый из Java через интерфейсы Statement.\n\nВыбор интерфейса зависит от характеристик хранимой процедуры:\n\n- без параметров — `Statement`\n- с входными параметрами — `PreparedStatement`\n- с входными и выходными параметрами — `CallableStatement`\n\nДля получения информации о хранимой процедуре (имена и типы параметров) можно использовать методы `java.sql.DatabaseMetaData`.\n\n\u003Cdetails>\n\u003Csummary>Пример вызова хранимой процедуры с входными и выходными параметрами\u003C\u002Fsummary>\n\n```java\npublic void runStoredProcedure(final Connection connection) throws Exception {\n    \u002F\u002F описываем хранимую процедуру\n    String procedure = \"{ call procedureExample(?, ?, ?) }\";\n\n    \u002F\u002F подготавливаем запрос\n    CallableStatement cs = connection.prepareCall(procedure);\n\n    \u002F\u002F устанавливаем входные параметры\n    cs.setString(1, \"abcd\");\n    cs.setBoolean(2, true);\n    cs.setInt(3, 10);\n\n    \u002F\u002F описываем выходные параметры\n    cs.registerOutParameter(1, java.sql.Types.VARCHAR);\n    cs.registerOutParameter(2, java.sql.Types.INTEGER);\n\n    \u002F\u002F запускаем выполнение хранимой процедуры\n    cs.execute();\n\n    \u002F\u002F получаем результаты\n    String parameter1 = cs.getString(1);\n    int parameter2 = cs.getInt(2);\n\n    \u002F\u002F заканчиваем работу с запросом\n    cs.close();\n}\n```\n\n\u003C\u002Fdetails>\n\n> **На собеседовании:** назовите CallableStatement и синтаксис вызова `{ call procedureName(?, ?) }`. Упомяните `registerOutParameter()` для выходных параметров. На практике хранимые процедуры в Java-проектах встречаются редко — чаще используются в legacy-системах или при интеграции с Oracle.","","middle",[15,7,16],"databases","sql",[],null,{"title":20,"description":21,"ogTitle":20,"ogDescription":22,"keywords":23,"schemaAnswer":31,"featuredSnippetReady":32},"Как вызвать хранимую процедуру в JDBC -- Gymterview","Вызов хранимых процедур в JDBC через CallableStatement: синтаксис { call proc(?, ?) }, входные\u002Fвыходные параметры, registerOutParameter на собеседовании.","CallableStatement для вызова хранимых процедур: синтаксис, входные и выходные параметры.",[24,25,26,27,28,8,29,30],"хранимая процедура","CallableStatement","prepareCall","registerOutParameter","stored procedure","Java","собеседование","Через CallableStatement с синтаксисом { call procedureName(?, ?) }. Входные параметры задаются через setString\u002FsetInt, выходные регистрируются через registerOutParameter(). Выбор интерфейса: без параметров -- Statement, с входными -- PreparedStatement, с входными и выходными -- CallableStatement.",true]