ホームページ > バックエンド開発 > Golang > golangはストアドプロシージャを実行します

golangはストアドプロシージャを実行します

王林
リリース: 2023-05-13 10:33:38
オリジナル
706 人が閲覧しました

Golang は、シンプル、効率的、スケーラブルなソフトウェアを構築するための静的プログラミング言語です。そのシンプルさ、読みやすさ、高速なパフォーマンスにより、エンタープライズ アプリケーション開発での人気が高まっています。ただし、Golang も他の言語と同様にデータベースに接続する必要があり、データの追加、削除、変更、クエリ自体は問題ありませんが、ストアド プロシージャの呼び出しが困難になる場合があります。この記事では、Golangでストアドプロシージャを呼び出す方法を紹介します。

ストアド プロシージャは、リレーショナル データベースに保存および管理される一連の SQL ステートメントです。入力パラメータ、出力パラメータ、戻り値を備えた単純なデータベース関数です。ストアド プロシージャを実行するには、Golang でのストアド プロシージャの基本構造とその呼び出しメソッドを理解する必要があります。次に、MySQL データベースに接続し、Golang でストアド プロシージャを呼び出す方法を示します。

  1. go-sql-driver/mysql パッケージのインストール

Golang を使用して MySQL データベースに接続するには、データベース ドライバーから必要なパッケージをインポートする必要があります。ここでは、MySQL データベース ドライバーとして go-sql-driver/mysql パッケージを使用しました。次のコマンドを使用して go-sql-driver/mysql パッケージをインストールできます:

go get -u github.com/go-sql-driver/mysql

  1. MySQL データベースに接続

Golang からストアド プロシージャを呼び出す前に、MySQL データベースに接続する必要があります。以下は、go-sql-driver/mysql パッケージを使用して MySQL データベースに接続するサンプル プログラムです。

package main

import (
    "database/sql"
    "fmt"

    _ "github.com/go-sql-driver/mysql"
)

func main() {
    db, err := sql.Open("mysql", "root:password@tcp(127.0.0.1:3306)/testdb")
    if err != nil {
        panic(err.Error())
    }
    defer db.Close()

    err = db.Ping()
    if err != nil {
        panic(err.Error())
    }

    fmt.Println("Connected to MySQL database.")
}
ログイン後にコピー

このサンプル プログラムは、sql.Open() 関数を使用して MySQL データベース接続を開きます。 2 番目のパラメーターは接続文字列で、ユーザー名、パスワード、IP アドレスとポート、および接続する必要があるデータベースの名前が含まれます。コード ブロックの終了後にデータベース接続を閉じるには、defer db.Close() ステートメントを使用します。

接続が成功したら、db.Ping() 関数を使用してデータベース接続が正常かどうかを確認する必要があります。

  1. 入力パラメータと戻り値を使用してストアド プロシージャを実行する

次は、golang と MySQL を使用してストアド プロシージャを一緒に実行するサンプル プログラムです。このサンプル プログラムでは、入力パラメーターと戻り値を持つ出力パラメーターを受け取るストアド プロシージャを呼び出します。

package main

import (
    "database/sql"
    "fmt"
    "log"

    _ "github.com/go-sql-driver/mysql"
)

func main() {

    db, err := sql.Open("mysql", "root:password@tcp(127.0.0.1:3306)/testdb")
    if err != nil {
        log.Fatal(err)
    }
    defer db.Close()

    storedProc := "CALL sp_get_customer_by_email(?, ?)"
    email := "test@test.com"
    var name string

    rows, err := db.Query(storedProc, email, &name)
    if err != nil {
        log.Fatal(err)
    }
    defer rows.Close()

    for rows.Next() {
        err := rows.Scan(&name)
        if err != nil {
            log.Fatal(err)
        }
    }

    fmt.Println("Name of the customer with given email is ", name)
}
ログイン後にコピー

上の例では、まず MySQL データベース接続を開き、次にストアド プロシージャを呼び出すための変数と入力パラメータを宣言します。この例では、ストアド プロシージャ名は sp_get_customer_by_email で、2 つの入力パラメータ (つまり、電子メール アドレスと文字列型の name 変数) と 1 つの出力変数 (つまり、戻り値) を持ちます。関数 db.Query() を通じて、電子メール アドレスを入力変数としてストアド プロシージャに渡します。

ストアド プロシージャが開始されると、ストアド プロシージャはクエリ結果を name 変数に返します。最後に、関数によって返された値を出力し、データベース接続を閉じます。この例では、ストアド プロシージャの戻り値が変数名に格納されていることがわかります。

概要

ストアド プロシージャの呼び出しは必要な手順であり、Golang を通じて開発されたエンタープライズ アプリケーションにも不可欠です。導入したサンプル プログラムは、go-sql-driver/mysql パッケージを使用して MySQL データベースに接続する方法と、入力パラメーターと戻り値を含むストアド プロシージャを使用して Golang と対話する方法を示しています。 Golang でストアド プロシージャを実行する基本をよく理解したので、それを次の開発プロジェクトに適用できます。

以上がgolangはストアドプロシージャを実行しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート