{"id":175,"date":"2010-12-13T13:19:29","date_gmt":"2010-12-13T20:19:29","guid":{"rendered":"https:\/\/wordpress-1325650-4848760.cloudwaysapps.com\/?p=175"},"modified":"2025-12-28T16:28:13","modified_gmt":"2025-12-28T21:28:13","slug":"mysql-stored-procedures","status":"publish","type":"post","link":"https:\/\/codesamplez.com\/database\/mysql-stored-procedures","title":{"rendered":"MySQL Stored Procedures: A Complete Guide for Beginners"},"content":{"rendered":"\n<p>Ever struggled with writing the same SQL queries over and over again in your code? I know I have! That&#8217;s where MySQL stored procedures come in to save the day. When I first discovered stored procedures after MySQL 5 was released, they completely transformed how I approach database programming.<\/p>\n\n\n\n<p>In web development, especially with <a href=\"https:\/\/codesamplez.com\/php-tutorials-and-examples\" target=\"_blank\" rel=\"noreferrer noopener\">PHP<\/a>, we&#8217;re used to writing raw SQL statements directly in our application code. While this works fine, it&#8217;s definitely not the most efficient approach. MySQL stored procedures offer a MUCH better alternative that will dramatically improve your database interactions.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-what-are-mysql-stored-procedures\">What Are MySQL Stored Procedures?<\/h2>\n\n\n\n<p>A MySQL stored procedure is essentially a set of SQL statements stored within the database itself. Think of it as a function or method that lives in your database rather than your application code. You can call it whenever needed, passing parameters and getting results back.<\/p>\n\n\n\n<p>Stored procedures offer several game-changing benefits:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Code reusability<\/strong> &#8211; Write once, use many times<\/li>\n\n\n\n<li><strong>Better security<\/strong> &#8211; Reduce SQL injection risks<\/li>\n\n\n\n<li><strong>Improved performance<\/strong> &#8211; Pre-compiled execution plans<\/li>\n\n\n\n<li><strong>Reduced network traffic<\/strong> &#8211; Send one call instead of multiple queries<\/li>\n\n\n\n<li><strong>Centralized business logic<\/strong> &#8211; Keep database operations in one place<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-creating-your-first-mysql-stored-procedure\">Creating Your First MySQL Stored Procedure<\/h2>\n\n\n\n<p>Let&#8217;s dive right into creating a simple stored procedure in MySQL. I&#8217;ll show you how to do this using PHPMyAdmin, which most web developers are familiar with.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-using-phpmyadmin\">Using PHPMyAdmin<\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Open PHPMyAdmin and select your database<\/li>\n\n\n\n<li>Click on the &#8220;SQL&#8221; tab<\/li>\n\n\n\n<li>Enter the following code:<\/li>\n<\/ol>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro padding-bottom-disabled cbp-has-line-numbers\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#d8dee9ff;--cbp-line-number-width:calc(2 * 0.6 * .875rem);line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span role=\"button\" tabindex=\"0\" style=\"color:#d8dee9ff;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>DELIMITER \/\/\n\nCREATE PROCEDURE check_number_type\n(IN number_id INTEGER) \nBEGIN\n    DECLARE name VARCHAR(10);\n    \n    IF number_id % 2 = 0 THEN\n        SET name = 'even';\n    ELSE\n        SET name = 'odd';\n    END IF;\n    \n    INSERT INTO number_table VALUES (number_id, name);\nEND \/\/\n\nDELIMITER ;<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M4.5 12.75l6 6 9-13.5\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6\"><\/path><\/svg><\/span><pre class=\"shiki nord\" style=\"background-color: #2e3440ff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #D8DEE9FF\">DELIMITER <\/span><span style=\"color: #81A1C1\">\/\/<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #81A1C1\">CREATE<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">PROCEDURE<\/span><span style=\"color: #D8DEE9FF\"> check_number_type<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">(<\/span><span style=\"color: #81A1C1\">IN<\/span><span style=\"color: #D8DEE9FF\"> number_id <\/span><span style=\"color: #81A1C1\">INTEGER<\/span><span style=\"color: #D8DEE9FF\">) <\/span><\/span>\n<span class=\"line\"><span style=\"color: #81A1C1\">BEGIN<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #81A1C1\">DECLARE<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">name<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">VARCHAR<\/span><span style=\"color: #D8DEE9FF\">(<\/span><span style=\"color: #B48EAD\">10<\/span><span style=\"color: #D8DEE9FF\">);<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #81A1C1\">IF<\/span><span style=\"color: #D8DEE9FF\"> number_id % <\/span><span style=\"color: #B48EAD\">2<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #B48EAD\">0<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">THEN<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        <\/span><span style=\"color: #81A1C1\">SET<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">name<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #ECEFF4\">&#39;<\/span><span style=\"color: #A3BE8C\">even<\/span><span style=\"color: #ECEFF4\">&#39;<\/span><span style=\"color: #D8DEE9FF\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #81A1C1\">ELSE<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        <\/span><span style=\"color: #81A1C1\">SET<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">name<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #ECEFF4\">&#39;<\/span><span style=\"color: #A3BE8C\">odd<\/span><span style=\"color: #ECEFF4\">&#39;<\/span><span style=\"color: #D8DEE9FF\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #81A1C1\">END<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">IF<\/span><span style=\"color: #D8DEE9FF\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #81A1C1\">INSERT INTO<\/span><span style=\"color: #D8DEE9FF\"> number_table <\/span><span style=\"color: #81A1C1\">VALUES<\/span><span style=\"color: #D8DEE9FF\"> (number_id, <\/span><span style=\"color: #81A1C1\">name<\/span><span style=\"color: #D8DEE9FF\">);<\/span><\/span>\n<span class=\"line\"><span style=\"color: #81A1C1\">END<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">\/\/<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">DELIMITER ;<\/span><\/span><\/code><\/pre><span style=\"display:flex;align-items:flex-end;padding:10px;width:100%;justify-content:flex-end;background-color:#2e3440ff;color:#c8d0e0;font-size:12px;line-height:1;position:relative\">SQL<\/span><\/div>\n\n\n\n<ol start=\"4\" class=\"wp-block-list\">\n<li>Click &#8220;Go&#8221; to execute<\/li>\n<\/ol>\n\n\n\n<p>This simple procedure takes a number as input, checks if it&#8217;s even or odd, and inserts the result into a table.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-understanding-the-code\">Understanding the Code<\/h3>\n\n\n\n<p>Let&#8217;s break down what&#8217;s happening in this procedure:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>DELIMITER \/\/<\/strong> &#8211; This changes the statement delimiter temporarily from semicolon (;) to double slash (\/\/) so MySQL doesn&#8217;t get confused by the semicolons inside our procedure.<\/li>\n\n\n\n<li><strong>CREATE PROCEDURE check_number_type<\/strong> &#8211; Names our procedure.<\/li>\n\n\n\n<li><strong>IN number_id INTEGER<\/strong> &#8211; Defines an input parameter.<\/li>\n\n\n\n<li><strong>DECLARE name VARCHAR(10)<\/strong> &#8211; Creates a local variable.<\/li>\n\n\n\n<li><strong>IF\/ELSE<\/strong> &#8211; Standard conditional logic.<\/li>\n\n\n\n<li><strong>SET name = &#8216;even&#8217;<\/strong> &#8211; Assigns a value to our variable.<\/li>\n\n\n\n<li><strong>INSERT INTO<\/strong> &#8211; Standard SQL statement.<\/li>\n\n\n\n<li><strong>DELIMITER ;<\/strong> &#8211; Changes the delimiter back to semicolon.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-parameters-in-mysql-stored-procedures\">Parameters in MySQL Stored Procedures<\/h2>\n\n\n\n<p>MySQL stored procedures can have three types of parameters:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>IN parameters<\/strong> &#8211; Input values passed to the procedure (most common)<\/li>\n\n\n\n<li><strong>OUT parameters<\/strong> &#8211; Output values returned from the procedure<\/li>\n\n\n\n<li><strong>INOUT parameters<\/strong> &#8211; Both input and output values<\/li>\n<\/ol>\n\n\n\n<p>Here&#8217;s an example with multiple parameter types:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro padding-bottom-disabled cbp-has-line-numbers\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#d8dee9ff;--cbp-line-number-width:calc(2 * 0.6 * .875rem);line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span role=\"button\" tabindex=\"0\" style=\"color:#d8dee9ff;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>DELIMITER \/\/\n\nCREATE PROCEDURE calculate_sum_and_difference\n(\n    IN num1 INT,\n    IN num2 INT,\n    OUT sum_result INT,\n    OUT diff_result INT\n)\nBEGIN\n    SET sum_result = num1 + num2;\n    SET diff_result = num1 - num2;\nEND \/\/\n\nDELIMITER ;<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M4.5 12.75l6 6 9-13.5\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6\"><\/path><\/svg><\/span><pre class=\"shiki nord\" style=\"background-color: #2e3440ff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #D8DEE9FF\">DELIMITER <\/span><span style=\"color: #81A1C1\">\/\/<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #81A1C1\">CREATE<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">PROCEDURE<\/span><span style=\"color: #D8DEE9FF\"> calculate_sum_and_difference<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">(<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #81A1C1\">IN<\/span><span style=\"color: #D8DEE9FF\"> num1 <\/span><span style=\"color: #81A1C1\">INT<\/span><span style=\"color: #D8DEE9FF\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #81A1C1\">IN<\/span><span style=\"color: #D8DEE9FF\"> num2 <\/span><span style=\"color: #81A1C1\">INT<\/span><span style=\"color: #D8DEE9FF\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #81A1C1\">OUT<\/span><span style=\"color: #D8DEE9FF\"> sum_result <\/span><span style=\"color: #81A1C1\">INT<\/span><span style=\"color: #D8DEE9FF\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #81A1C1\">OUT<\/span><span style=\"color: #D8DEE9FF\"> diff_result <\/span><span style=\"color: #81A1C1\">INT<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #81A1C1\">BEGIN<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #81A1C1\">SET<\/span><span style=\"color: #D8DEE9FF\"> sum_result <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> num1 <\/span><span style=\"color: #81A1C1\">+<\/span><span style=\"color: #D8DEE9FF\"> num2;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #81A1C1\">SET<\/span><span style=\"color: #D8DEE9FF\"> diff_result <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> num1 <\/span><span style=\"color: #81A1C1\">-<\/span><span style=\"color: #D8DEE9FF\"> num2;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #81A1C1\">END<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">\/\/<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">DELIMITER ;<\/span><\/span><\/code><\/pre><span style=\"display:flex;align-items:flex-end;padding:10px;width:100%;justify-content:flex-end;background-color:#2e3440ff;color:#c8d0e0;font-size:12px;line-height:1;position:relative\">SQL<\/span><\/div>\n\n\n\n<p>To call this procedure and get the results:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-1\" data-shcb-language-name=\"CSS\" data-shcb-language-slug=\"css\"><span><code class=\"hljs language-css\"><span class=\"hljs-selector-tag\">CALL<\/span> <span class=\"hljs-selector-tag\">calculate_sum_and_difference<\/span>(10, 5, <span class=\"hljs-keyword\">@sum<\/span>, @diff);\n<span class=\"hljs-selector-tag\">SELECT<\/span> <span class=\"hljs-keyword\">@sum<\/span>, @diff;<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-1\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">CSS<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">css<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<h2 class=\"wp-block-heading\" id=\"h-executing-mysql-stored-procedures-from-php\">Executing MySQL Stored Procedures from PHP<\/h2>\n\n\n\n<p>Calling stored procedures from PHP is straightforward. Here&#8217;s how to do it:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro padding-bottom-disabled cbp-has-line-numbers\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#d8dee9ff;--cbp-line-number-width:calc(2 * 0.6 * .875rem);line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span role=\"button\" tabindex=\"0\" style=\"color:#d8dee9ff;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>&lt;?php\n\/\/ Connect to database\n$conn = mysqli_connect(\"localhost\", \"username\", \"password\", \"database\");\n\n\/\/ For a simple procedure with one input parameter\n$id = 5;\n$result = mysqli_query($conn, \"CALL check_number_type($id)\");\n\n\/\/ For a procedure with output parameters\nmysqli_query($conn, \"CALL calculate_sum_and_difference(10, 5, @sum, @diff)\");\n$result = mysqli_query($conn, \"SELECT @sum, @diff\");\n$row = mysqli_fetch_assoc($result);\necho \"Sum: \" . $row&#91;'@sum'&#93; . \", Difference: \" . $row&#91;'@diff'&#93;;\n\nmysqli_close($conn);\n?><\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M4.5 12.75l6 6 9-13.5\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6\"><\/path><\/svg><\/span><pre class=\"shiki nord\" style=\"background-color: #2e3440ff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #81A1C1\">&lt;?<\/span><span style=\"color: #D8DEE9FF\">php<\/span><\/span>\n<span class=\"line\"><span style=\"color: #616E88\">\/\/ Connect to database<\/span><\/span>\n<span class=\"line\"><span style=\"color: #81A1C1\">$<\/span><span style=\"color: #D8DEE9\">conn<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #88C0D0\">mysqli_connect<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #A3BE8C\">localhost<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #88C0D0\"> <\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #A3BE8C\">username<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #88C0D0\"> <\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #A3BE8C\">password<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #88C0D0\"> <\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #A3BE8C\">database<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #ECEFF4\">)<\/span><span style=\"color: #81A1C1\">;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #616E88\">\/\/ For a simple procedure with one input parameter<\/span><\/span>\n<span class=\"line\"><span style=\"color: #81A1C1\">$<\/span><span style=\"color: #D8DEE9\">id<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #B48EAD\">5<\/span><span style=\"color: #81A1C1\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #81A1C1\">$<\/span><span style=\"color: #D8DEE9\">result<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #88C0D0\">mysqli_query<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #81A1C1\">$<\/span><span style=\"color: #D8DEE9\">conn<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #88C0D0\"> <\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #A3BE8C\">CALL check_number_type(<\/span><span style=\"color: #81A1C1\">$<\/span><span style=\"color: #D8DEE9\">id<\/span><span style=\"color: #A3BE8C\">)<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #ECEFF4\">)<\/span><span style=\"color: #81A1C1\">;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #616E88\">\/\/ For a procedure with output parameters<\/span><\/span>\n<span class=\"line\"><span style=\"color: #88C0D0\">mysqli_query<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #81A1C1\">$<\/span><span style=\"color: #D8DEE9\">conn<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #88C0D0\"> <\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #A3BE8C\">CALL calculate_sum_and_difference(10, 5, @sum, @diff)<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #ECEFF4\">)<\/span><span style=\"color: #81A1C1\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #81A1C1\">$<\/span><span style=\"color: #D8DEE9\">result<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #88C0D0\">mysqli_query<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #81A1C1\">$<\/span><span style=\"color: #D8DEE9\">conn<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #88C0D0\"> <\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #81A1C1\">SELECT<\/span><span style=\"color: #A3BE8C\"> @sum, @diff<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #ECEFF4\">)<\/span><span style=\"color: #81A1C1\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #81A1C1\">$<\/span><span style=\"color: #D8DEE9\">row<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #88C0D0\">mysqli_fetch_assoc<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #81A1C1\">$<\/span><span style=\"color: #D8DEE9\">result<\/span><span style=\"color: #ECEFF4\">)<\/span><span style=\"color: #81A1C1\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #81A1C1\">echo<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #A3BE8C\">Sum: <\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">.<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">$<\/span><span style=\"color: #D8DEE9\">row<\/span><span style=\"color: #ECEFF4\">&#91;<\/span><span style=\"color: #ECEFF4\">&#39;<\/span><span style=\"color: #A3BE8C\">@sum<\/span><span style=\"color: #ECEFF4\">&#39;<\/span><span style=\"color: #ECEFF4\">&#93;<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">.<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #A3BE8C\">, Difference: <\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">.<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">$<\/span><span style=\"color: #D8DEE9\">row<\/span><span style=\"color: #ECEFF4\">&#91;<\/span><span style=\"color: #ECEFF4\">&#39;<\/span><span style=\"color: #A3BE8C\">@diff<\/span><span style=\"color: #ECEFF4\">&#39;<\/span><span style=\"color: #ECEFF4\">&#93;<\/span><span style=\"color: #81A1C1\">;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #88C0D0\">mysqli_close<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #81A1C1\">$<\/span><span style=\"color: #D8DEE9\">conn<\/span><span style=\"color: #ECEFF4\">)<\/span><span style=\"color: #81A1C1\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #81A1C1\">?&gt;<\/span><\/span><\/code><\/pre><span style=\"display:flex;align-items:flex-end;padding:10px;width:100%;justify-content:flex-end;background-color:#2e3440ff;color:#c8d0e0;font-size:12px;line-height:1;position:relative\">PHP<\/span><\/div>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-advanced-features-of-mysql-stored-procedures\">Advanced Features of MySQL Stored Procedures<\/h2>\n\n\n\n<p>Once you&#8217;ve mastered the basics, you can explore more advanced features:<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-conditional-statements\">Conditional Statements<\/h3>\n\n\n\n<p>Beyond simple IF\/ELSE, MySQL supports CASE statements:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro padding-bottom-disabled cbp-has-line-numbers\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#d8dee9ff;--cbp-line-number-width:calc(2 * 0.6 * .875rem);line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span role=\"button\" tabindex=\"0\" style=\"color:#d8dee9ff;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>DELIMITER \/\/\n\nCREATE PROCEDURE grade_student\n(IN score INT)\nBEGIN\n    DECLARE grade CHAR(1);\n    \n    CASE\n        WHEN score >= 90 THEN SET grade = 'A';\n        WHEN score >= 80 THEN SET grade = 'B';\n        WHEN score >= 70 THEN SET grade = 'C';\n        WHEN score >= 60 THEN SET grade = 'D';\n        ELSE SET grade = 'F';\n    END CASE;\n    \n    SELECT grade;\nEND \/\/\n\nDELIMITER ;<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M4.5 12.75l6 6 9-13.5\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6\"><\/path><\/svg><\/span><pre class=\"shiki nord\" style=\"background-color: #2e3440ff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #D8DEE9FF\">DELIMITER <\/span><span style=\"color: #81A1C1\">\/\/<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #81A1C1\">CREATE<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">PROCEDURE<\/span><span style=\"color: #D8DEE9FF\"> grade_student<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">(<\/span><span style=\"color: #81A1C1\">IN<\/span><span style=\"color: #D8DEE9FF\"> score <\/span><span style=\"color: #81A1C1\">INT<\/span><span style=\"color: #D8DEE9FF\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #81A1C1\">BEGIN<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #81A1C1\">DECLARE<\/span><span style=\"color: #D8DEE9FF\"> grade <\/span><span style=\"color: #81A1C1\">CHAR<\/span><span style=\"color: #D8DEE9FF\">(<\/span><span style=\"color: #B48EAD\">1<\/span><span style=\"color: #D8DEE9FF\">);<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #81A1C1\">CASE<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        <\/span><span style=\"color: #81A1C1\">WHEN<\/span><span style=\"color: #D8DEE9FF\"> score <\/span><span style=\"color: #81A1C1\">&gt;=<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #B48EAD\">90<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">THEN<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">SET<\/span><span style=\"color: #D8DEE9FF\"> grade <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #ECEFF4\">&#39;<\/span><span style=\"color: #A3BE8C\">A<\/span><span style=\"color: #ECEFF4\">&#39;<\/span><span style=\"color: #D8DEE9FF\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        <\/span><span style=\"color: #81A1C1\">WHEN<\/span><span style=\"color: #D8DEE9FF\"> score <\/span><span style=\"color: #81A1C1\">&gt;=<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #B48EAD\">80<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">THEN<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">SET<\/span><span style=\"color: #D8DEE9FF\"> grade <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #ECEFF4\">&#39;<\/span><span style=\"color: #A3BE8C\">B<\/span><span style=\"color: #ECEFF4\">&#39;<\/span><span style=\"color: #D8DEE9FF\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        <\/span><span style=\"color: #81A1C1\">WHEN<\/span><span style=\"color: #D8DEE9FF\"> score <\/span><span style=\"color: #81A1C1\">&gt;=<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #B48EAD\">70<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">THEN<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">SET<\/span><span style=\"color: #D8DEE9FF\"> grade <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #ECEFF4\">&#39;<\/span><span style=\"color: #A3BE8C\">C<\/span><span style=\"color: #ECEFF4\">&#39;<\/span><span style=\"color: #D8DEE9FF\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        <\/span><span style=\"color: #81A1C1\">WHEN<\/span><span style=\"color: #D8DEE9FF\"> score <\/span><span style=\"color: #81A1C1\">&gt;=<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #B48EAD\">60<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">THEN<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">SET<\/span><span style=\"color: #D8DEE9FF\"> grade <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #ECEFF4\">&#39;<\/span><span style=\"color: #A3BE8C\">D<\/span><span style=\"color: #ECEFF4\">&#39;<\/span><span style=\"color: #D8DEE9FF\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        <\/span><span style=\"color: #81A1C1\">ELSE<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">SET<\/span><span style=\"color: #D8DEE9FF\"> grade <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #ECEFF4\">&#39;<\/span><span style=\"color: #A3BE8C\">F<\/span><span style=\"color: #ECEFF4\">&#39;<\/span><span style=\"color: #D8DEE9FF\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #81A1C1\">END<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">CASE<\/span><span style=\"color: #D8DEE9FF\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #81A1C1\">SELECT<\/span><span style=\"color: #D8DEE9FF\"> grade;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #81A1C1\">END<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">\/\/<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">DELIMITER ;<\/span><\/span><\/code><\/pre><span style=\"display:flex;align-items:flex-end;padding:10px;width:100%;justify-content:flex-end;background-color:#2e3440ff;color:#c8d0e0;font-size:12px;line-height:1;position:relative\">SQL<\/span><\/div>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-loops\">Loops<\/h3>\n\n\n\n<p>MySQL procedures support several types of loops:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro padding-bottom-disabled cbp-has-line-numbers\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#d8dee9ff;--cbp-line-number-width:calc(2 * 0.6 * .875rem);line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span role=\"button\" tabindex=\"0\" style=\"color:#d8dee9ff;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>-- WHILE loop\nDELIMITER \/\/\nCREATE PROCEDURE count_up\n(IN max_num INT)\nBEGIN\n    DECLARE counter INT DEFAULT 1;\n    \n    WHILE counter &lt;= max_num DO\n        SELECT counter;\n        SET counter = counter + 1;\n    END WHILE;\nEND \/\/\nDELIMITER ;\n\n-- REPEAT loop (executes at least once)\nDELIMITER \/\/\nCREATE PROCEDURE count_down\n(IN start_num INT)\nBEGIN\n    REPEAT\n        SELECT start_num;\n        SET start_num = start_num - 1;\n    UNTIL start_num &lt;= 0\n    END REPEAT;\nEND \/\/\nDELIMITER ;<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M4.5 12.75l6 6 9-13.5\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6\"><\/path><\/svg><\/span><pre class=\"shiki nord\" style=\"background-color: #2e3440ff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #616E88\">-- WHILE loop<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">DELIMITER <\/span><span style=\"color: #81A1C1\">\/\/<\/span><\/span>\n<span class=\"line\"><span style=\"color: #81A1C1\">CREATE<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">PROCEDURE<\/span><span style=\"color: #D8DEE9FF\"> count_up<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">(<\/span><span style=\"color: #81A1C1\">IN<\/span><span style=\"color: #D8DEE9FF\"> max_num <\/span><span style=\"color: #81A1C1\">INT<\/span><span style=\"color: #D8DEE9FF\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #81A1C1\">BEGIN<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #81A1C1\">DECLARE<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">counter<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">INT<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">DEFAULT<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #B48EAD\">1<\/span><span style=\"color: #D8DEE9FF\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #81A1C1\">WHILE<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">counter<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">&lt;=<\/span><span style=\"color: #D8DEE9FF\"> max_num DO<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        <\/span><span style=\"color: #81A1C1\">SELECT<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">counter<\/span><span style=\"color: #D8DEE9FF\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        <\/span><span style=\"color: #81A1C1\">SET<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">counter<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">counter<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">+<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #B48EAD\">1<\/span><span style=\"color: #D8DEE9FF\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #81A1C1\">END<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">WHILE<\/span><span style=\"color: #D8DEE9FF\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #81A1C1\">END<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">\/\/<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">DELIMITER ;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #616E88\">-- REPEAT loop (executes at least once)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">DELIMITER <\/span><span style=\"color: #81A1C1\">\/\/<\/span><\/span>\n<span class=\"line\"><span style=\"color: #81A1C1\">CREATE<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">PROCEDURE<\/span><span style=\"color: #D8DEE9FF\"> count_down<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">(<\/span><span style=\"color: #81A1C1\">IN<\/span><span style=\"color: #D8DEE9FF\"> start_num <\/span><span style=\"color: #81A1C1\">INT<\/span><span style=\"color: #D8DEE9FF\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #81A1C1\">BEGIN<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #81A1C1\">REPEAT<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        <\/span><span style=\"color: #81A1C1\">SELECT<\/span><span style=\"color: #D8DEE9FF\"> start_num;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        <\/span><span style=\"color: #81A1C1\">SET<\/span><span style=\"color: #D8DEE9FF\"> start_num <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> start_num <\/span><span style=\"color: #81A1C1\">-<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #B48EAD\">1<\/span><span style=\"color: #D8DEE9FF\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    UNTIL start_num <\/span><span style=\"color: #81A1C1\">&lt;=<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #B48EAD\">0<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #81A1C1\">END<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">REPEAT<\/span><span style=\"color: #D8DEE9FF\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #81A1C1\">END<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">\/\/<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">DELIMITER ;<\/span><\/span><\/code><\/pre><span style=\"display:flex;align-items:flex-end;padding:10px;width:100%;justify-content:flex-end;background-color:#2e3440ff;color:#c8d0e0;font-size:12px;line-height:1;position:relative\">SQL<\/span><\/div>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-error-handling\">Error Handling<\/h3>\n\n\n\n<p>MySQL provides DECLARE handlers for error conditions:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro padding-bottom-disabled cbp-has-line-numbers\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#d8dee9ff;--cbp-line-number-width:calc(2 * 0.6 * .875rem);line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span role=\"button\" tabindex=\"0\" style=\"color:#d8dee9ff;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>DELIMITER \/\/\nCREATE PROCEDURE safe_division\n(IN numerator DECIMAL, IN denominator DECIMAL)\nBEGIN\n    DECLARE result DECIMAL DEFAULT 0;\n    DECLARE div_error BOOLEAN DEFAULT FALSE;\n    \n    -- Define error handler\n    DECLARE CONTINUE HANDLER FOR SQLEXCEPTION\n        SET div_error = TRUE;\n    \n    -- Attempt division\n    IF denominator &lt;> 0 THEN\n        SET result = numerator \/ denominator;\n    ELSE\n        SET div_error = TRUE;\n    END IF;\n    \n    -- Return appropriate message\n    IF div_error THEN\n        SELECT 'Error: Cannot divide by zero' AS message;\n    ELSE\n        SELECT result AS result;\n    END IF;\nEND \/\/\nDELIMITER ;<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M4.5 12.75l6 6 9-13.5\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6\"><\/path><\/svg><\/span><pre class=\"shiki nord\" style=\"background-color: #2e3440ff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #D8DEE9FF\">DELIMITER <\/span><span style=\"color: #81A1C1\">\/\/<\/span><\/span>\n<span class=\"line\"><span style=\"color: #81A1C1\">CREATE<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">PROCEDURE<\/span><span style=\"color: #D8DEE9FF\"> safe_division<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">(<\/span><span style=\"color: #81A1C1\">IN<\/span><span style=\"color: #D8DEE9FF\"> numerator <\/span><span style=\"color: #81A1C1\">DECIMAL<\/span><span style=\"color: #D8DEE9FF\">, <\/span><span style=\"color: #81A1C1\">IN<\/span><span style=\"color: #D8DEE9FF\"> denominator <\/span><span style=\"color: #81A1C1\">DECIMAL<\/span><span style=\"color: #D8DEE9FF\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #81A1C1\">BEGIN<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #81A1C1\">DECLARE<\/span><span style=\"color: #D8DEE9FF\"> result <\/span><span style=\"color: #81A1C1\">DECIMAL<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">DEFAULT<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #B48EAD\">0<\/span><span style=\"color: #D8DEE9FF\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #81A1C1\">DECLARE<\/span><span style=\"color: #D8DEE9FF\"> div_error <\/span><span style=\"color: #81A1C1\">BOOLEAN<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">DEFAULT<\/span><span style=\"color: #D8DEE9FF\"> FALSE;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><\/span>\n<span class=\"line\"><span style=\"color: #ECEFF4\">    <\/span><span style=\"color: #616E88\">-- Define error handler<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #81A1C1\">DECLARE<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">CONTINUE<\/span><span style=\"color: #D8DEE9FF\"> HANDLER <\/span><span style=\"color: #81A1C1\">FOR<\/span><span style=\"color: #D8DEE9FF\"> SQLEXCEPTION<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        <\/span><span style=\"color: #81A1C1\">SET<\/span><span style=\"color: #D8DEE9FF\"> div_error <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> TRUE;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><\/span>\n<span class=\"line\"><span style=\"color: #ECEFF4\">    <\/span><span style=\"color: #616E88\">-- Attempt division<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #81A1C1\">IF<\/span><span style=\"color: #D8DEE9FF\"> denominator <\/span><span style=\"color: #81A1C1\">&lt;&gt;<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #B48EAD\">0<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">THEN<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        <\/span><span style=\"color: #81A1C1\">SET<\/span><span style=\"color: #D8DEE9FF\"> result <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> numerator <\/span><span style=\"color: #81A1C1\">\/<\/span><span style=\"color: #D8DEE9FF\"> denominator;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #81A1C1\">ELSE<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        <\/span><span style=\"color: #81A1C1\">SET<\/span><span style=\"color: #D8DEE9FF\"> div_error <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> TRUE;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #81A1C1\">END<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">IF<\/span><span style=\"color: #D8DEE9FF\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><\/span>\n<span class=\"line\"><span style=\"color: #ECEFF4\">    <\/span><span style=\"color: #616E88\">-- Return appropriate message<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #81A1C1\">IF<\/span><span style=\"color: #D8DEE9FF\"> div_error <\/span><span style=\"color: #81A1C1\">THEN<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        <\/span><span style=\"color: #81A1C1\">SELECT<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #ECEFF4\">&#39;<\/span><span style=\"color: #A3BE8C\">Error: Cannot divide by zero<\/span><span style=\"color: #ECEFF4\">&#39;<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">AS<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">message<\/span><span style=\"color: #D8DEE9FF\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #81A1C1\">ELSE<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        <\/span><span style=\"color: #81A1C1\">SELECT<\/span><span style=\"color: #D8DEE9FF\"> result <\/span><span style=\"color: #81A1C1\">AS<\/span><span style=\"color: #D8DEE9FF\"> result;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #81A1C1\">END<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">IF<\/span><span style=\"color: #D8DEE9FF\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #81A1C1\">END<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">\/\/<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">DELIMITER ;<\/span><\/span><\/code><\/pre><span style=\"display:flex;align-items:flex-end;padding:10px;width:100%;justify-content:flex-end;background-color:#2e3440ff;color:#c8d0e0;font-size:12px;line-height:1;position:relative\">SQL<\/span><\/div>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-best-practices-for-mysql-stored-procedures\">Best Practices for MySQL Stored Procedures<\/h2>\n\n\n\n<p>Based on my experience, here are some tips for working effectively with stored procedures:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Use meaningful names<\/strong> &#8211; Name your procedures so their purpose is immediately clear<\/li>\n\n\n\n<li><strong>Comment your code<\/strong> &#8211; Especially for complex procedures<\/li>\n\n\n\n<li><strong>Choose appropriate parameter types<\/strong> &#8211; Only use IN unless you need OUT\/INOUT<\/li>\n\n\n\n<li><strong>Handle errors properly<\/strong> &#8211; Always implement error handling for robustness<\/li>\n\n\n\n<li><strong>Keep procedures focused<\/strong> &#8211; Each procedure should do one thing well<\/li>\n\n\n\n<li><strong>Avoid excessive logic<\/strong> &#8211; Very complex business logic might be better in application code<\/li>\n\n\n\n<li><strong>Test thoroughly<\/strong> &#8211; Stored procedures can be difficult to debug<\/li>\n<\/ol>\n\n\n\n<p><em>Tip \ud83d\udca1: Explore more <a href=\"https:\/\/codesamplez.com\/development\/mysql-best-practices\" target=\"_blank\" rel=\"noreferrer noopener\">MySQL Best Practices<\/a>!<\/em><\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-limitations-and-considerations\">Limitations and Considerations<\/h2>\n\n\n\n<p>While stored procedures are powerful, they do have some limitations:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Limited debugging capabilities<\/strong> &#8211; Debugging stored procedures can be challenging<\/li>\n\n\n\n<li><strong>Portability concerns<\/strong> &#8211; Different databases handle stored procedures differently<\/li>\n\n\n\n<li><strong>Version control issues<\/strong> &#8211; More difficult to track changes than application code<\/li>\n\n\n\n<li><strong>Language limitations<\/strong> &#8211; SQL is not as flexible as general-purpose programming languages<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-when-to-use-mysql-stored-procedures\">When to Use MySQL Stored Procedures<\/h2>\n\n\n\n<p>Stored procedures are particularly useful in these scenarios:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Repetitive database operations<\/strong> &#8211; Avoid duplicating the same queries<\/li>\n\n\n\n<li><strong>Complex multi-step transactions<\/strong> &#8211; Keep related operations together<\/li>\n\n\n\n<li><strong>Data validation<\/strong> &#8211; Enforce business rules at the database level<\/li>\n\n\n\n<li><strong>Security-sensitive operations<\/strong> &#8211; Limit direct table access<\/li>\n\n\n\n<li><strong>Performance-critical functions<\/strong> &#8211; Reduce network traffic and query parsing overhead<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-conclusion\">Conclusion<\/h2>\n\n\n\n<p>MySQL stored procedures are an essential tool in any database developer&#8217;s toolkit. They offer significant advantages in terms of code organization, security, and performance. While they might seem intimidating at first, the skills you develop working with stored procedures will absolutely pay off in the long run.<\/p>\n\n\n\n<p>I encourage you to start incorporating stored procedures into your MySQL projects. Even if you begin with simple cases, you&#8217;ll quickly see how they can streamline your database interactions and make your applications more maintainable.<\/p>\n\n\n\n<p>Have you tried using MySQL stored procedures in your projects? What benefits or challenges have you encountered? I&#8217;d love to hear about your experiences in the comments!<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-additional-resources\">Additional Resources<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/dev.mysql.com\/doc\/refman\/8.0\/en\/stored-programs-defining.html\">MySQL Official Documentation<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/dev.mysql.com\/doc\/refman\/8.0\/en\/stored-program-restrictions.html\">Best Practices<\/a><\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>MySQL stored procedures are precompiled SQL statements stored in the database, enabling efficient execution of complex operations. This tutorial introduces the creation and management of stored procedures using phpMyAdmin and SQL scripts. It covers defining procedures with input and output parameters, utilizing local variables, and implementing conditional logic. <\/p>\n","protected":false},"author":1,"featured_media":58679,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_genesis_hide_title":false,"_genesis_hide_breadcrumbs":false,"_genesis_hide_singular_image":false,"_genesis_hide_footer_widgets":false,"_genesis_custom_body_class":"","_genesis_custom_post_class":"","_genesis_layout":"","jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":false,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2}},"categories":[16],"tags":[8],"class_list":{"0":"post-175","1":"post","2":"type-post","3":"status-publish","4":"format-standard","5":"has-post-thumbnail","7":"category-database","8":"tag-mysql","9":"entry"},"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v27.3 (Yoast SEO v27.3) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>MySQL Stored Procedures: A Complete Guide for Beginners - CodeSamplez.com<\/title>\n<meta name=\"description\" content=\"Master MySQL stored procedures with this comprehensive guide. Learn to create, execute and optimize stored procedures with practical examples\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/codesamplez.com\/database\/mysql-stored-procedures\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"MySQL Stored Procedures: A Complete Guide for Beginners\" \/>\n<meta property=\"og:description\" content=\"Master MySQL stored procedures with this comprehensive guide. Learn to create, execute and optimize stored procedures with practical examples\" \/>\n<meta property=\"og:url\" content=\"https:\/\/codesamplez.com\/database\/mysql-stored-procedures\" \/>\n<meta property=\"og:site_name\" content=\"CodeSamplez.com\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/codesamplez\" \/>\n<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/ranacseruet\" \/>\n<meta property=\"article:published_time\" content=\"2010-12-13T20:19:29+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-12-28T21:28:13+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/codesamplez.com\/wp-content\/uploads\/2010\/12\/mysql-stored-procedures.webp\" \/>\n\t<meta property=\"og:image:width\" content=\"1536\" \/>\n\t<meta property=\"og:image:height\" content=\"1024\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/webp\" \/>\n<meta name=\"author\" content=\"Rana Ahsan\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@ranacseruet\" \/>\n<meta name=\"twitter:site\" content=\"@codesamplez\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Rana Ahsan\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"4 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":[\"Article\",\"BlogPosting\"],\"@id\":\"https:\\\/\\\/codesamplez.com\\\/database\\\/mysql-stored-procedures#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/codesamplez.com\\\/database\\\/mysql-stored-procedures\"},\"author\":{\"name\":\"Rana Ahsan\",\"@id\":\"https:\\\/\\\/codesamplez.com\\\/#\\\/schema\\\/person\\\/a82c3c07205f4bb73d6b3b0906bc328b\"},\"headline\":\"MySQL Stored Procedures: A Complete Guide for Beginners\",\"datePublished\":\"2010-12-13T20:19:29+00:00\",\"dateModified\":\"2025-12-28T21:28:13+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/codesamplez.com\\\/database\\\/mysql-stored-procedures\"},\"wordCount\":841,\"commentCount\":4,\"publisher\":{\"@id\":\"https:\\\/\\\/codesamplez.com\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/codesamplez.com\\\/database\\\/mysql-stored-procedures#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/codesamplez.com\\\/wp-content\\\/uploads\\\/2010\\\/12\\\/mysql-stored-procedures.webp\",\"keywords\":[\"mysql\"],\"articleSection\":[\"Database\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/codesamplez.com\\\/database\\\/mysql-stored-procedures#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/codesamplez.com\\\/database\\\/mysql-stored-procedures\",\"url\":\"https:\\\/\\\/codesamplez.com\\\/database\\\/mysql-stored-procedures\",\"name\":\"MySQL Stored Procedures: A Complete Guide for Beginners - CodeSamplez.com\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/codesamplez.com\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/codesamplez.com\\\/database\\\/mysql-stored-procedures#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/codesamplez.com\\\/database\\\/mysql-stored-procedures#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/codesamplez.com\\\/wp-content\\\/uploads\\\/2010\\\/12\\\/mysql-stored-procedures.webp\",\"datePublished\":\"2010-12-13T20:19:29+00:00\",\"dateModified\":\"2025-12-28T21:28:13+00:00\",\"description\":\"Master MySQL stored procedures with this comprehensive guide. Learn to create, execute and optimize stored procedures with practical examples\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/codesamplez.com\\\/database\\\/mysql-stored-procedures#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/codesamplez.com\\\/database\\\/mysql-stored-procedures\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/codesamplez.com\\\/database\\\/mysql-stored-procedures#primaryimage\",\"url\":\"https:\\\/\\\/codesamplez.com\\\/wp-content\\\/uploads\\\/2010\\\/12\\\/mysql-stored-procedures.webp\",\"contentUrl\":\"https:\\\/\\\/codesamplez.com\\\/wp-content\\\/uploads\\\/2010\\\/12\\\/mysql-stored-procedures.webp\",\"width\":1536,\"height\":1024,\"caption\":\"MySQL Stored Procedures For Beginners\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/codesamplez.com\\\/database\\\/mysql-stored-procedures#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/codesamplez.com\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"MySQL Stored Procedures: A Complete Guide for Beginners\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/codesamplez.com\\\/#website\",\"url\":\"https:\\\/\\\/codesamplez.com\\\/\",\"name\":\"CODESAMPLEZ.COM\",\"description\":\"Programming And Development Resources\",\"publisher\":{\"@id\":\"https:\\\/\\\/codesamplez.com\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/codesamplez.com\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/codesamplez.com\\\/#organization\",\"name\":\"codesamplez.com\",\"url\":\"https:\\\/\\\/codesamplez.com\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/codesamplez.com\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/codesamplez.com\\\/wp-content\\\/uploads\\\/2024\\\/10\\\/cropped-favicon.webp\",\"contentUrl\":\"https:\\\/\\\/codesamplez.com\\\/wp-content\\\/uploads\\\/2024\\\/10\\\/cropped-favicon.webp\",\"width\":512,\"height\":512,\"caption\":\"codesamplez.com\"},\"image\":{\"@id\":\"https:\\\/\\\/codesamplez.com\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/www.facebook.com\\\/codesamplez\",\"https:\\\/\\\/x.com\\\/codesamplez\"]},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/codesamplez.com\\\/#\\\/schema\\\/person\\\/a82c3c07205f4bb73d6b3b0906bc328b\",\"name\":\"Rana Ahsan\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/5c7a4f88bcf4a55cd1483386318ebecf27359154275a0b355b0ea186676f9f7f?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/5c7a4f88bcf4a55cd1483386318ebecf27359154275a0b355b0ea186676f9f7f?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/5c7a4f88bcf4a55cd1483386318ebecf27359154275a0b355b0ea186676f9f7f?s=96&d=mm&r=g\",\"caption\":\"Rana Ahsan\"},\"description\":\"Rana Ahsan is a seasoned software engineer and technology leader specialized in distributed systems and software architecture. With a Master\u2019s in Software Engineering from Concordia University, his experience spans leading scalable architecture at Coursera and TopHat, contributing to open-source projects. This blog, CodeSamplez.com, showcases his passion for sharing practical insights on programming and distributed systems concepts and help educate others. Github | X | LinkedIn\",\"sameAs\":[\"https:\\\/\\\/github.com\\\/ranacseruet\",\"https:\\\/\\\/www.facebook.com\\\/ranacseruet\",\"https:\\\/\\\/www.linkedin.com\\\/in\\\/ranacseruet\\\/\",\"https:\\\/\\\/x.com\\\/ranacseruet\"],\"url\":\"https:\\\/\\\/codesamplez.com\\\/author\\\/admin\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"MySQL Stored Procedures: A Complete Guide for Beginners - CodeSamplez.com","description":"Master MySQL stored procedures with this comprehensive guide. Learn to create, execute and optimize stored procedures with practical examples","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/codesamplez.com\/database\/mysql-stored-procedures","og_locale":"en_US","og_type":"article","og_title":"MySQL Stored Procedures: A Complete Guide for Beginners","og_description":"Master MySQL stored procedures with this comprehensive guide. Learn to create, execute and optimize stored procedures with practical examples","og_url":"https:\/\/codesamplez.com\/database\/mysql-stored-procedures","og_site_name":"CodeSamplez.com","article_publisher":"https:\/\/www.facebook.com\/codesamplez","article_author":"https:\/\/www.facebook.com\/ranacseruet","article_published_time":"2010-12-13T20:19:29+00:00","article_modified_time":"2025-12-28T21:28:13+00:00","og_image":[{"width":1536,"height":1024,"url":"https:\/\/codesamplez.com\/wp-content\/uploads\/2010\/12\/mysql-stored-procedures.webp","type":"image\/webp"}],"author":"Rana Ahsan","twitter_card":"summary_large_image","twitter_creator":"@ranacseruet","twitter_site":"@codesamplez","twitter_misc":{"Written by":"Rana Ahsan","Est. reading time":"4 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":["Article","BlogPosting"],"@id":"https:\/\/codesamplez.com\/database\/mysql-stored-procedures#article","isPartOf":{"@id":"https:\/\/codesamplez.com\/database\/mysql-stored-procedures"},"author":{"name":"Rana Ahsan","@id":"https:\/\/codesamplez.com\/#\/schema\/person\/a82c3c07205f4bb73d6b3b0906bc328b"},"headline":"MySQL Stored Procedures: A Complete Guide for Beginners","datePublished":"2010-12-13T20:19:29+00:00","dateModified":"2025-12-28T21:28:13+00:00","mainEntityOfPage":{"@id":"https:\/\/codesamplez.com\/database\/mysql-stored-procedures"},"wordCount":841,"commentCount":4,"publisher":{"@id":"https:\/\/codesamplez.com\/#organization"},"image":{"@id":"https:\/\/codesamplez.com\/database\/mysql-stored-procedures#primaryimage"},"thumbnailUrl":"https:\/\/codesamplez.com\/wp-content\/uploads\/2010\/12\/mysql-stored-procedures.webp","keywords":["mysql"],"articleSection":["Database"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/codesamplez.com\/database\/mysql-stored-procedures#respond"]}]},{"@type":"WebPage","@id":"https:\/\/codesamplez.com\/database\/mysql-stored-procedures","url":"https:\/\/codesamplez.com\/database\/mysql-stored-procedures","name":"MySQL Stored Procedures: A Complete Guide for Beginners - CodeSamplez.com","isPartOf":{"@id":"https:\/\/codesamplez.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/codesamplez.com\/database\/mysql-stored-procedures#primaryimage"},"image":{"@id":"https:\/\/codesamplez.com\/database\/mysql-stored-procedures#primaryimage"},"thumbnailUrl":"https:\/\/codesamplez.com\/wp-content\/uploads\/2010\/12\/mysql-stored-procedures.webp","datePublished":"2010-12-13T20:19:29+00:00","dateModified":"2025-12-28T21:28:13+00:00","description":"Master MySQL stored procedures with this comprehensive guide. Learn to create, execute and optimize stored procedures with practical examples","breadcrumb":{"@id":"https:\/\/codesamplez.com\/database\/mysql-stored-procedures#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/codesamplez.com\/database\/mysql-stored-procedures"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/codesamplez.com\/database\/mysql-stored-procedures#primaryimage","url":"https:\/\/codesamplez.com\/wp-content\/uploads\/2010\/12\/mysql-stored-procedures.webp","contentUrl":"https:\/\/codesamplez.com\/wp-content\/uploads\/2010\/12\/mysql-stored-procedures.webp","width":1536,"height":1024,"caption":"MySQL Stored Procedures For Beginners"},{"@type":"BreadcrumbList","@id":"https:\/\/codesamplez.com\/database\/mysql-stored-procedures#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/codesamplez.com\/"},{"@type":"ListItem","position":2,"name":"MySQL Stored Procedures: A Complete Guide for Beginners"}]},{"@type":"WebSite","@id":"https:\/\/codesamplez.com\/#website","url":"https:\/\/codesamplez.com\/","name":"CODESAMPLEZ.COM","description":"Programming And Development Resources","publisher":{"@id":"https:\/\/codesamplez.com\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/codesamplez.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/codesamplez.com\/#organization","name":"codesamplez.com","url":"https:\/\/codesamplez.com\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/codesamplez.com\/#\/schema\/logo\/image\/","url":"https:\/\/codesamplez.com\/wp-content\/uploads\/2024\/10\/cropped-favicon.webp","contentUrl":"https:\/\/codesamplez.com\/wp-content\/uploads\/2024\/10\/cropped-favicon.webp","width":512,"height":512,"caption":"codesamplez.com"},"image":{"@id":"https:\/\/codesamplez.com\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/codesamplez","https:\/\/x.com\/codesamplez"]},{"@type":"Person","@id":"https:\/\/codesamplez.com\/#\/schema\/person\/a82c3c07205f4bb73d6b3b0906bc328b","name":"Rana Ahsan","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/5c7a4f88bcf4a55cd1483386318ebecf27359154275a0b355b0ea186676f9f7f?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/5c7a4f88bcf4a55cd1483386318ebecf27359154275a0b355b0ea186676f9f7f?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/5c7a4f88bcf4a55cd1483386318ebecf27359154275a0b355b0ea186676f9f7f?s=96&d=mm&r=g","caption":"Rana Ahsan"},"description":"Rana Ahsan is a seasoned software engineer and technology leader specialized in distributed systems and software architecture. With a Master\u2019s in Software Engineering from Concordia University, his experience spans leading scalable architecture at Coursera and TopHat, contributing to open-source projects. This blog, CodeSamplez.com, showcases his passion for sharing practical insights on programming and distributed systems concepts and help educate others. Github | X | LinkedIn","sameAs":["https:\/\/github.com\/ranacseruet","https:\/\/www.facebook.com\/ranacseruet","https:\/\/www.linkedin.com\/in\/ranacseruet\/","https:\/\/x.com\/ranacseruet"],"url":"https:\/\/codesamplez.com\/author\/admin"}]}},"jetpack_publicize_connections":[],"jetpack_featured_media_url":"https:\/\/codesamplez.com\/wp-content\/uploads\/2010\/12\/mysql-stored-procedures.webp","jetpack_shortlink":"https:\/\/wp.me\/p1hHlI-2P","jetpack_sharing_enabled":true,"jetpack-related-posts":[{"id":24560,"url":"https:\/\/codesamplez.com\/database\/mysql-indexing-best-practices","url_meta":{"origin":175,"position":0},"title":"MySQL Indexing Best Practices: A Comprehensive Guide","author":"Rana Ahsan","date":"August 10, 2014","format":false,"excerpt":"Efficient indexing is vital for optimizing MySQL query performance, especially with large datasets. This guide outlines best practices for creating and managing indexes. It emphasizes indexing columns used in WHERE clauses, JOINs, and ORDER BY operations, while cautioning against over-indexing due to potential write performance impacts. By understanding when and\u2026","rel":"","context":"In &quot;Database&quot;","block_context":{"text":"Database","link":"https:\/\/codesamplez.com\/category\/database"},"img":{"alt_text":"MySQL Indexing Best Practices","src":"https:\/\/i0.wp.com\/codesamplez.com\/wp-content\/uploads\/2014\/08\/MySQL-Indexing-Best-Practices.webp?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/codesamplez.com\/wp-content\/uploads\/2014\/08\/MySQL-Indexing-Best-Practices.webp?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/codesamplez.com\/wp-content\/uploads\/2014\/08\/MySQL-Indexing-Best-Practices.webp?resize=525%2C300&ssl=1 1.5x, https:\/\/i0.wp.com\/codesamplez.com\/wp-content\/uploads\/2014\/08\/MySQL-Indexing-Best-Practices.webp?resize=700%2C400&ssl=1 2x, https:\/\/i0.wp.com\/codesamplez.com\/wp-content\/uploads\/2014\/08\/MySQL-Indexing-Best-Practices.webp?resize=1050%2C600&ssl=1 3x, https:\/\/i0.wp.com\/codesamplez.com\/wp-content\/uploads\/2014\/08\/MySQL-Indexing-Best-Practices.webp?resize=1400%2C800&ssl=1 4x"},"classes":[]},{"id":63,"url":"https:\/\/codesamplez.com\/database\/foreign-key-constraint-mysql","url_meta":{"origin":175,"position":1},"title":"MySQL Foreign Key Constraints: Guide To Database Relationships","author":"Rana Ahsan","date":"October 24, 2010","format":false,"excerpt":"Foreign key constraints in MySQL are essential for maintaining data integrity by enforcing relationships between tables. This tutorial from CodeSamplez explains how to implement foreign keys using phpMyAdmin. It emphasizes the importance of using the InnoDB storage engine, as MyISAM does not support foreign keys. The guide walks through setting\u2026","rel":"","context":"In &quot;Database&quot;","block_context":{"text":"Database","link":"https:\/\/codesamplez.com\/category\/database"},"img":{"alt_text":"mysql foreign key constraints","src":"https:\/\/i0.wp.com\/codesamplez.com\/wp-content\/uploads\/2010\/10\/mysql-foreign-key-constraints.webp?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/codesamplez.com\/wp-content\/uploads\/2010\/10\/mysql-foreign-key-constraints.webp?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/codesamplez.com\/wp-content\/uploads\/2010\/10\/mysql-foreign-key-constraints.webp?resize=525%2C300&ssl=1 1.5x, https:\/\/i0.wp.com\/codesamplez.com\/wp-content\/uploads\/2010\/10\/mysql-foreign-key-constraints.webp?resize=700%2C400&ssl=1 2x, https:\/\/i0.wp.com\/codesamplez.com\/wp-content\/uploads\/2010\/10\/mysql-foreign-key-constraints.webp?resize=1050%2C600&ssl=1 3x, https:\/\/i0.wp.com\/codesamplez.com\/wp-content\/uploads\/2010\/10\/mysql-foreign-key-constraints.webp?resize=1400%2C800&ssl=1 4x"},"classes":[]},{"id":37,"url":"https:\/\/codesamplez.com\/database\/mysql-best-practices","url_meta":{"origin":175,"position":2},"title":"MySQL Best Practices: Ultimate Guide to DataBase Optimization","author":"Rana Ahsan","date":"July 30, 2010","format":false,"excerpt":"This guide aims to be your ultimate reference to MySQL best practices. Discover essential MySQL best practices for performance, security, and maintainability. Learn how to write efficient queries, create proper indexes and optimize your database for speed and reliability.","rel":"","context":"In &quot;Database&quot;","block_context":{"text":"Database","link":"https:\/\/codesamplez.com\/category\/database"},"img":{"alt_text":"MySQL Best Practices","src":"https:\/\/i0.wp.com\/codesamplez.com\/wp-content\/uploads\/2010\/07\/mysql-best-practices.webp?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/codesamplez.com\/wp-content\/uploads\/2010\/07\/mysql-best-practices.webp?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/codesamplez.com\/wp-content\/uploads\/2010\/07\/mysql-best-practices.webp?resize=525%2C300&ssl=1 1.5x, https:\/\/i0.wp.com\/codesamplez.com\/wp-content\/uploads\/2010\/07\/mysql-best-practices.webp?resize=700%2C400&ssl=1 2x, https:\/\/i0.wp.com\/codesamplez.com\/wp-content\/uploads\/2010\/07\/mysql-best-practices.webp?resize=1050%2C600&ssl=1 3x, https:\/\/i0.wp.com\/codesamplez.com\/wp-content\/uploads\/2010\/07\/mysql-best-practices.webp?resize=1400%2C800&ssl=1 4x"},"classes":[]},{"id":414,"url":"https:\/\/codesamplez.com\/database\/insert-update-delete-linq-to-sql","url_meta":{"origin":175,"position":3},"title":"LINQ Update Operations in C#: A Complete Guide","author":"Rana Ahsan","date":"February 2, 2011","format":false,"excerpt":"This tutorial provides practical C# code examples for performing INSERT, UPDATE, and DELETE operations using LINQ to SQL. It guides you through setting up a data context, manipulating records, and committing changes to a SQL Server database, making it ideal for developers integrating LINQ into their .NET applications.","rel":"","context":"In &quot;Database&quot;","block_context":{"text":"Database","link":"https:\/\/codesamplez.com\/category\/database"},"img":{"alt_text":"LinQ Update Operations in C#","src":"https:\/\/i0.wp.com\/codesamplez.com\/wp-content\/uploads\/2011\/02\/LinQ-Update.webp?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/codesamplez.com\/wp-content\/uploads\/2011\/02\/LinQ-Update.webp?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/codesamplez.com\/wp-content\/uploads\/2011\/02\/LinQ-Update.webp?resize=525%2C300&ssl=1 1.5x, https:\/\/i0.wp.com\/codesamplez.com\/wp-content\/uploads\/2011\/02\/LinQ-Update.webp?resize=700%2C400&ssl=1 2x, https:\/\/i0.wp.com\/codesamplez.com\/wp-content\/uploads\/2011\/02\/LinQ-Update.webp?resize=1050%2C600&ssl=1 3x, https:\/\/i0.wp.com\/codesamplez.com\/wp-content\/uploads\/2011\/02\/LinQ-Update.webp?resize=1400%2C800&ssl=1 4x"},"classes":[]},{"id":22719,"url":"https:\/\/codesamplez.com\/devops\/lamp-stack-on-ubuntu","url_meta":{"origin":175,"position":4},"title":"Installing LAMP Stack on Ubuntu: The Ultimate Guide","author":"Rana Ahsan","date":"March 13, 2013","format":false,"excerpt":"This article provides a step-by-step guide to installing the LAMP stack\u2014Linux, Apache, MySQL, and PHP\u2014on an Ubuntu server. It emphasizes manual installation over bundled packages for greater flexibility, easier updates, and deeper system understanding. The guide covers installing Apache, PHP, and MySQL individually, configuring each component, and verifying the setup\u2026","rel":"","context":"In &quot;DevOps&quot;","block_context":{"text":"DevOps","link":"https:\/\/codesamplez.com\/category\/devops"},"img":{"alt_text":"Installing LAMP Stack On Ubuntu","src":"https:\/\/i0.wp.com\/codesamplez.com\/wp-content\/uploads\/2013\/03\/lamp-stack-ubuntu.webp?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/codesamplez.com\/wp-content\/uploads\/2013\/03\/lamp-stack-ubuntu.webp?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/codesamplez.com\/wp-content\/uploads\/2013\/03\/lamp-stack-ubuntu.webp?resize=525%2C300&ssl=1 1.5x, https:\/\/i0.wp.com\/codesamplez.com\/wp-content\/uploads\/2013\/03\/lamp-stack-ubuntu.webp?resize=700%2C400&ssl=1 2x, https:\/\/i0.wp.com\/codesamplez.com\/wp-content\/uploads\/2013\/03\/lamp-stack-ubuntu.webp?resize=1050%2C600&ssl=1 3x, https:\/\/i0.wp.com\/codesamplez.com\/wp-content\/uploads\/2013\/03\/lamp-stack-ubuntu.webp?resize=1400%2C800&ssl=1 4x"},"classes":[]},{"id":23560,"url":"https:\/\/codesamplez.com\/database\/php-doctrine-entity-generator-tutorial","url_meta":{"origin":175,"position":5},"title":"Doctrine Generate Model and Database Schemas","author":"Rana Ahsan","date":"April 28, 2013","format":false,"excerpt":"This tutorial provides a step-by-step guide on using Doctrine ORM to generate database schemas from PHP entity classes and vice versa. It covers configuring Doctrine, creating entity classes, and utilizing the command-line tools to automate the generation of database tables and entity classes, streamlining the development process","rel":"","context":"In &quot;Database&quot;","block_context":{"text":"Database","link":"https:\/\/codesamplez.com\/category\/database"},"img":{"alt_text":"php doctrine mysql","src":"https:\/\/i0.wp.com\/codesamplez.com\/wp-content\/uploads\/2013\/04\/php-doctrine-mysql.png?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/codesamplez.com\/wp-content\/uploads\/2013\/04\/php-doctrine-mysql.png?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/codesamplez.com\/wp-content\/uploads\/2013\/04\/php-doctrine-mysql.png?resize=525%2C300&ssl=1 1.5x, https:\/\/i0.wp.com\/codesamplez.com\/wp-content\/uploads\/2013\/04\/php-doctrine-mysql.png?resize=700%2C400&ssl=1 2x, https:\/\/i0.wp.com\/codesamplez.com\/wp-content\/uploads\/2013\/04\/php-doctrine-mysql.png?resize=1050%2C600&ssl=1 3x, https:\/\/i0.wp.com\/codesamplez.com\/wp-content\/uploads\/2013\/04\/php-doctrine-mysql.png?resize=1400%2C800&ssl=1 4x"},"classes":[]}],"_links":{"self":[{"href":"https:\/\/codesamplez.com\/wp-json\/wp\/v2\/posts\/175","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/codesamplez.com\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/codesamplez.com\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/codesamplez.com\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/codesamplez.com\/wp-json\/wp\/v2\/comments?post=175"}],"version-history":[{"count":3,"href":"https:\/\/codesamplez.com\/wp-json\/wp\/v2\/posts\/175\/revisions"}],"predecessor-version":[{"id":59348,"href":"https:\/\/codesamplez.com\/wp-json\/wp\/v2\/posts\/175\/revisions\/59348"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/codesamplez.com\/wp-json\/wp\/v2\/media\/58679"}],"wp:attachment":[{"href":"https:\/\/codesamplez.com\/wp-json\/wp\/v2\/media?parent=175"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/codesamplez.com\/wp-json\/wp\/v2\/categories?post=175"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/codesamplez.com\/wp-json\/wp\/v2\/tags?post=175"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}