การเรียกใช้ Call : MySQL Stored Procedure

SQL Knowledge ทั้ง sql มาตรฐาน หลักการออกแบบฐานข้อมูล ความสัมพันธ์ของ ตาราง Mysql , PGSQL, Oracle, MSSQL

Moderators: mindphp, ผู้ดูแลกระดาน

User avatar
Ik Kat
PHP Super Member
PHP Super Member
Posts: 291
Joined: 26/06/2017 2:32 pm

การเรียกใช้ Call : MySQL Stored Procedure

Postby Ik Kat » 30/06/2017 4:16 pm

การเรียกใช้งาน Call เป็นการเรียกผ่าน MySQL Database ซึ่งสามารถร่วมกับ PHP , Visual Basic (VB.Net) , JDBC และ Visual C# ได้

Code: Select all

DROP PROCEDURE IF EXISTS getCustomer;
DELIMITER //
CREATE PROCEDURE getCustomer(IN pCountryCode VARCHAR(2))
BEGIN
   SELECT * FROM customer WHERE COUNTRY_CODE = pCountryCode;
END //
DELIMITER ;


Image

ตัวอย่างการเรียกใช้ด้วย PHP :
    โดยการใช้ฟังก์ชั่น ของ mysqli ซึ่งสามารถใช้คำสั่ง Call ได้ทันที

Code: Select all

<?php
   ini_set('display_errors', 1);
   error_reporting(~0);

   $serverName = "localhost";
   $userName = "root";
   $userPassword = "root";
   $dbName = "mydatabase";

   $conn = mysqli_connect($serverName,$userName,$userPassword,$dbName);

   $sql = "CALL getCustomer('US')";

   $query = mysqli_query($conn,$sql);

?>

Code: Select all

<?php
while($result=mysqli_fetch_array($query,MYSQLI_ASSOC))
{
?>

Code: Select all

<?php
mysqli_close($conn);
?>


ตัวอย่างการเรียกใช้ด้วย Visual Basic (VB.Net) :
    โดยการ Imports MySql.Data.MySqlClient ซึ่งสามารถใช้คำสั่ง Call ได้ทันที

Code: Select all

Imports MySql.Data.MySqlClient
Imports System.Data

Module MyModule

    Sub Main()
        Dim objConn As New MySqlConnection()
        Dim objCmd As New MySqlCommand()
        Dim dtAdapter As New MySqlDataAdapter()

        Dim ds As New DataSet()
        Dim dt As DataTable
        Dim strConnString As String, strSQL As String

        strConnString = "Server=localhost;User Id=root; Password=root; Database=mydatabase; Pooling=false"

        strSQL = "CALL getCustomer('US')"

        objConn.ConnectionString = strConnString
        objConn.Open()
        objCmd.Connection = objConn
        objCmd.CommandText = strSQL
        objCmd.CommandType = CommandType.Text

        dtAdapter.SelectCommand = objCmd

        dtAdapter.Fill(ds)
        dt = ds.Tables(0)

        For i As Integer = 0 To dt.Rows.Count - 1
            Console.Write(dt.Rows(i)("CUSTOMER_ID"))
            Console.Write(" - ")
            Console.Write(dt.Rows(i)("NAME"))
            Console.Write(" - ")
            Console.Write(dt.Rows(i)("EMAIL"))
            Console.Write("")
        Next

        dtAdapter = Nothing
        objConn.Close()
        objConn = Nothing
    End Sub

End Module


ตัวอย่างการเรียกใช้ด้วย JDBC :
    โดยการใช้ com.mysql.jdbc.Driver ซึ่งสามารถใช้คำสั่ง Call ได้ทันที

Code: Select all

public static void main(String[] args) {
      
      Connection connect = null;
      Statement s = null;
      
      try {
         Class.forName("com.mysql.jdbc.Driver");
         connect =  DriverManager.getConnection("jdbc:mysql://localhost/mydatabase" +
               "?user=root&password=root");
         
         s = connect.createStatement();
         
         String CountryCode = "US";
         
         String sql = "CALL getCustomer('" + CountryCode + "') ";
         
         ResultSet rec = s.executeQuery(sql);
         
         while((rec!=null) && (rec.next()))
            {
                System.out.print(rec.getString("CUSTOMER_ID"));
                System.out.print(" - ");
                System.out.print(rec.getString("NAME"));
                System.out.print(" - ");
                System.out.print(rec.getString("EMAIL"));
                System.out.println("");
            }
             
      } catch (Exception e) {
         // TODO Auto-generated catch block
         e.printStackTrace();
      }
      
      // Close
      try {
         if(connect != null){
            s.close();
            connect.close();
         }
      } catch (SQLException e) {
         // TODO Auto-generated catch block
         e.printStackTrace();
      }
      
   }
   


ตัวอย่างการเรียกใช้ด้วย Visual C# :
    โดยการใช้ MySql.Data.MySqlClientr ซึ่งสามารถใช้คำสั่ง Call ได้ทันที

Code: Select all

using MySql.Data.MySqlClient;

Code: Select all

        static void Main(string[] args)
        {
            MySqlConnection objConn = new MySqlConnection();
            MySqlCommand objCmd = new MySqlCommand();
            MySqlDataAdapter dtAdapter = new MySqlDataAdapter();

            DataSet ds = new DataSet();
            DataTable dt;
            String strConnString, strSQL;

            strConnString = "Server=localhost;User Id=root; Password=root; " +
                "Database=mydatabase; Pooling=false";

            strSQL = "CALL getCustomer('US')";

            objConn.ConnectionString = strConnString;
            objConn.Open();
            objCmd.Connection = objConn;
            objCmd.CommandText = strSQL;
            objCmd.CommandType = CommandType.Text;

            dtAdapter.SelectCommand = objCmd;

            dtAdapter.Fill(ds);
            dt = ds.Tables[0];

            for (int i = 0; i <= dt.Rows.Count - 1; i++)
            {
                Console.Write(dt.Rows[i]["CUSTOMER_ID"]);
                Console.Write(" - ");
                Console.Write(dt.Rows[i]["NAME"]);
                Console.Write(" - ");
                Console.Write(dt.Rows[i]["EMAIL"]);
                Console.Write("");
            }

            dtAdapter = null;
            objConn.Close();
            objConn = null;
        }
   

Return to “SQL Knowledge”

Who is online

Users browsing this forum: No registered users and 13 guests