3.创建一个名为func_good的存储函数,用于获取goods表中的记录数。 4.调用存储函数func_good(),查看其返回值。
时间: 2024-02-16 17:05:32 浏览: 99
好的,以下是创建存储函数和调用它的 SQL 代码:
1. 创建存储函数func_good:
```
CREATE FUNCTION func_good() RETURNS INT
BEGIN
DECLARE count INT;
SELECT COUNT(*) INTO count FROM goods;
RETURN count;
END;
```
2. 调用存储函数func_good(),查看其返回值:
```
SELECT func_good();
```
这将返回一个整数,表示goods表中的记录数。
相关问题
func PostFeedBackList(a *decorator.ApiBase, data *adminStruct.FeedBackList) error { logger.AccessLogger.Info("PostFeedBackList...") res := adminStruct.AfterSaleResp{} f := []adminStruct.AFeedBackList{} query := a.Ts.Table("feedback a"). Select("a.fid,a.gid,m.star,u.user_name,a.appraise_time,boi.order_no,m.shop_id"). Joins("left join reply_temp m on a.mid=m.mid"). Joins("left join business_order_info boi on boi.uid=a.uid"). Joins("left join user_base u on u.uid=a.uid ") if len(data.ShopId) > 0 { query = query.Where("m.shop_id like ?", data.ShopId) } if data.Gid > 0 { query = query.Where("a.gid like ?", data.Gid) } if len(data.OrderNo) > 0 { query = query.Where("boi.order_no like ?", data.OrderNo) } if len(data.UserName) > 0 { query = query.Where("u.user_name like ?", data.UserName) } if data.Star > 0 { query = query.Where("m.star like ?", data.Star) } if data.AppraiseTime > 0 { query = query.Where("a.appraise_time like ? ", data.AppraiseTime) } utils.Error(query.Find(&res.Data).Error) var fids []int64 for _, i := range res.Data { fids = append(fids, i.Fid) } utils.Error(a.Ts.Table("feedback a"). Select("g.image,g.gname,boi.order_no,u.user_name,m.star,a.appraise_time,a.appraise_text,m.country,m.shop_id"). Joins("left join goods_base g on a.gid=g.gid"). Joins("left join reply_temp m on a.mid=m.mid"). Joins("left join business_order_info boi on boi.uid=a.uid"). Joins("left join user_base u on u.uid=a.uid "). Where("a.fid like ?", fids). Find(&f). Error) return a.ReturnSuccessCustomResponse(res) }
为了在`PostFeedBackList`函数中添加商家名称的搜索显示功能,可以按照以下步骤进行修改:
1. 在`data`结构体中添加一个名为`BusinessName`的字符串字段,用于接收商家名称作为搜索条件。
```go
type FeedBackList struct {
// ...
BusinessName string `json:"businessName"`
// ...
}
```
2. 在查询语句中添加一个条件,根据商家名称进行模糊匹配。可以使用`LIKE`关键字和`%`通配符来实现模糊搜索。
```go
query := a.Ts.Table("feedback a").
Select("a.fid, a.gid, m.star, u.user_name, a.appraise_time, boi.order_no, m.shop_id").
Joins("left join reply_temp m on a.mid = m.mid").
Joins("left join business_order_info boi on boi.uid = a.uid").
Joins("left join user_base u on u.uid = a.uid")
if len(data.BusinessName) > 0 {
query = query.Where("m.shop_id LIKE ?", "%"+data.BusinessName+"%")
}
```
在上述代码中,我们使用`Where`方法添加了一个条件,使用`LIKE`和通配符进行模糊匹配,并将商家名称作为参数传递给了`Where`方法。
这样,当调用`PostFeedBackList`函数时,可以通过传递`BusinessName`字段作为参数来进行商家名称的搜索,例如:
```go
data := &adminStruct.FeedBackList{
// ...
BusinessName: "商家名称",
// ...
}
err := PostFeedBackList(a, data)
```
请注意,这只是一个示例修改,具体的实现可能因为代码结构和需求的不同而有所调整。
func PostPurchaseList(a *decorator.ApiBase, data *adminStruct.PurchaseList) error { logger.AccessLogger.Info("PostPurchaseList....") res := adminStruct.PurchaseListResp{} //res.ResponseCommon = a.NewSuccessResponseCommon() query := a.Ts.Table("purchase_order_info a"). Select("a.poid,a.cuid,a.arrival_num,a.sum_num,a.goods_sum_amt,a.pur_amt,a.other_amt,a.sum_amt,whi.addr,whi.phone,whi.contacts"). Joins(`left join warehouse_info whi on a.wid = whi.wid`) if len(data.OrderNo) > 0 { query = query.Where("a.order_no like ?", fmt.Sprintf("%%%s%%", data.OrderNo)) } if len(data.Sku) > 0 { query = query.Where("gs.sku like ?", fmt.Sprintf("%%%s%%", data.Sku)) } if len(data.Gname) > 0 { query = query.Where("g.gname like ?", data.Gname) } if data.Wid > 0 { query = query.Where("a.wid like ?", data.Wid) } if data.Sid > 0 { query = query.Where("a.sid like ?", data.Sid) } if len(data.LogisticsId) > 0 { query = query.Where("a.logistics_id like ?", data.LogisticsId) } if len(data.Remark) > 0 { query = query.Where("a.remark like ?", data.Remark) } if len(data.ApplyPayStatus) > 0 { query = query.Where("a.arrival_status like ?", data.ApplyPayStatus) } if len(data.PayStatus) > 0 { query = query.Where("a.pay_status like ?", data.PayStatus) } if len(data.ArrivalStatus) > 0 { query = query.Where("a.arrival_status like ?", data.ArrivalStatus) } if data.ArrivalTime > 0 { query = query.Where(" a.arrival_time=?", data.ExpectCime-time.Now().Unix()) } if data.Ctime > 0 { query = query.Where(" a.ctime>=?", data.BeginDate) } if data.Ctime > 0 { query = query.Where(" a.ctime<=?", data.EndDate) } utils.Error(query.Limit(a.Size). Offset(a.Offset). Find(&res.Data).Error) var poids []int64 for _, i := range res.Data { poids = append(poids, i.Poid) } g := []adminStruct.GoodsInfo2{} utils.Error(a.Ts.Table("purchase_order_list b"). Select("b.poid,gs.sku,b.price,b.num,g.gname,g.image,b.polid,b.goods"). Joins(`left join goods_base g on g.gid=b.gid`). Joins(`left join goods_sku gs on gs.gsid = b.skuid`). Where("b.poid in ?", poids).Find(&g).Error) for i, _ := range res.Data { p := &res.Data[i] for _, i2 := range g { if i2.Poid == p.Poid { p.Detail = append(p.Detail, i2) } } } return a.ReturnSuccessCustomResponse(res) }
这段代码是一个名为 "PostPurchaseList" 的函数,它接受两个参数:指向decorator.ApiBase类型的指针a和指向adminStruct.PurchaseList类型的指针data。该函数的目的是根据传入的data参数中的条件查询数据库,并返回查询结果。
首先,函数创建了一个空的adminStruct.PurchaseListResp结构体res,用于存储查询结果。然后,通过调用logger.AccessLogger.Info方法记录日志信息。
接下来,函数创建了一个查询对象query,查询的目标表是"purchase_order_info a",并选择了一些字段。通过左连接warehouse_info表,查询还包括了该表的一些字段。
接下来,函数根据data中的条件逐个添加WHERE子句到query中。如果data中的OrderNo字段不为空,则添加一个类似"a.order_no like '%xxx%'"的条件语句。其他字段的处理方式类似。
然后,函数处理了data中的两个时间字段。如果data中的ArrivalTime字段大于0,则添加一个"a.arrival_time=?"的条件语句,其中参数是data.ExpectCime减去当前时间戳。如果data中的Ctime字段大于0,则添加一个"a.ctime>=?"和"a.ctime<=?"的条件语句,其中参数分别是data.BeginDate和data.EndDate。
接下来,函数通过调用query的Limit和Offset方法设置了查询的限制和偏移量,并将查询结果存储到res.Data中。
接下来,函数创建了一个空的int64类型切片poids,用于存储查询结果中的poid字段。
然后,函数创建了一个空的adminStruct.GoodsInfo2类型切片g,用于存储查询结果中的商品信息。
接下来,函数创建了一个查询对象,查询的目标表是"purchase_order_list b",并选择了一些字段。通过左连接goods_base表和goods_sku表,查询还包括了这两个表的一些字段。其中,查询条件为"b.poid in ?",参数为poids。
最后,函数对查询结果进行处理,将商品信息添加到对应的采购单中。
最后,函数通过调用a的ReturnSuccessCustomResponse方法返回查询结果res。
请注意,这段代码只是函数的实现部分,可能还有其他代码文件中定义的相关结构体、方法等。
阅读全文