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

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

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

ภาพประจำตัวสมาชิก
Ik Kat
PHP Super Member
PHP Super Member
โพสต์: 279
ลงทะเบียนเมื่อ: 26/06/2017 2:32 pm

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

โพสต์โดย Ik Kat » 30/06/2017 4:16 pm

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

โค้ด: เลือกทั้งหมด

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


รูปภาพ

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

โค้ด: เลือกทั้งหมด

<?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);

?>

โค้ด: เลือกทั้งหมด

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

โค้ด: เลือกทั้งหมด

<?php
mysqli_close($conn);
?>


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

โค้ด: เลือกทั้งหมด

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 ได้ทันที

โค้ด: เลือกทั้งหมด

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 ได้ทันที

โค้ด: เลือกทั้งหมด

using MySql.Data.MySqlClient;

โค้ด: เลือกทั้งหมด

        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;
        }
   

ย้อนกลับไปยัง

ผู้ใช้งานขณะนี้

กำลังดูบอร์ดนี้: 1 และ บุคคลทั่วไป 0 ท่าน