go mysql存储过程_Golang 调用MySQL存储过程
Golang 調用MySQL存儲過程
最近寫項目發現,很多邏輯業務的實現,寫到數據庫的存儲過程中,然后調用,真的非常方便。后端代碼量大大減少,最重要的是性能高,速度快!
引用說明:項目使用數據庫ORM xorm(附地址)
存儲過程代碼 demo:
數據庫名:user
表名:student
create table student
(
id int auto_increment primary key,
name varchar(10) null,
age int null comment '年齡',
gender tinyint null comment '性別<1:男/2:女>',
phone varchar(15) null,
address varchar(50) null
);
insert into student (name, age, gender, phone, address) values ('Jerry',28,1,'13812341234','上海市');
存儲過程 demo
-- 創建存儲過程
create procedure query_student(IN i_name varchar(10),
IN i_gender tinyint,
OUT o_id int,
OUT o_name varchar(10),
OUT o_age int,
OUT o_gender tinyint,
OUT o_phone varchar(15),
out o_address varchar(50))
comment '根據名字和性別查詢學生信息'
begin
-- 搜索信息并賦值
select student.id,
student.name,
student.age,
student.gender,
student.phone,
student.address
into o_id,o_name,o_age,o_gender,o_phone,o_address
from student
where student.name = i_name
and student.gender = i_gender;
-- 返回結果需要返回的結果
select o_id,o_name,o_age,o_gender,o_phone,o_address;
end;
Golang代碼 demo:
代碼:
var engine *xorm.Engine
func InitMySQL(dbDsn string) {
var err error
engine, err = xorm.NewEngine("mysql", dbDsn)
if err != nil {
panic(err)
}
engine.ShowSQL(true)
}
func MySQL() *xorm.Engine {
return engine
}
InitMySQL("user:password@tcp(127.0.0.1:3306)/user?charset=utf8")
queryString, err := MySQL().QueryString("call user.query_student(?,?,@1,@2,@3,@4,@5,@6)", "Jerry", 1)
if err != nil {
log.Println("err:", err)
}
for k, v := range queryString[0] {
fmt.Printf("columns:%v - value:%v\n", k, v)
}
輸出結果
columns:o_name - value:Jerry
columns:o_age - value:28
columns:o_gender - value:1
columns:o_phone - value:13812341234
columns:o_address - value:上海市
columns:o_id - value:1
以上只是做了個最簡單的demo,如果遇到更復雜的搜索情況,靠存儲過程實現,效率非常可觀!
標簽:調用,varchar,name,err,gender,Golang,student,MySQL,columns
來源: https://blog.csdn.net/ming2316780/article/details/86499344
總結
以上是生活随笔為你收集整理的go mysql存储过程_Golang 调用MySQL存储过程的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java应用重启导致数据丢失_java
- 下一篇: java 多线程并发 问题_JAVA多线