Foxtable(狐表)用户栏目专家坐堂 → [分享]存储过程使用方法详记


  共有4708人关注过本帖树形打印复制链接

主题:[分享]存储过程使用方法详记

帅哥哟,离线,有人找我吗?
jnletao
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:943 积分:7802 威望:0 精华:0 注册:2013/7/7 13:37:00
[分享]存储过程使用方法详记  发帖心情 Post By:2014/11/25 8:46:00 [显示全部帖子]

本人对存储过程比较陌生,这几天在论坛大能的帖子里整理学习了下。以下内容供分享及交流,不足之处还请指证
1.存储过程写法(例)
USE [PClothData]
GO
/****** 对象: StoredProcedure [dbo].[GroupStorePro] 脚本日期: 11/25/2014 08:37:56 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[GroupStorePro]

@FieldStr nvarchar(255) = '款号,颜色,尺码',
@FilterStr nvarchar(1000) = '1=1',
@HavingStr nvarchar(255) = '',
@OrderStr nvarchar(255) = '款号,颜色,尺码'
AS

Declare @sql NVarchar(4000)
Set @sql='Select '+@FieldStr+', Sum(数量) As [库存数量],Sum(CASE WHEN 正负 = 1 THEN 数量 ELSE 0 END) As [入库数量],Sum(CASE WHEN 正负 = -1 THEN 数量 ELSE 0 END)*-1 As [出库数量],round((CASE WHEN Sum(CASE WHEN 正负 = 1 THEN 数量 ELSE 0 END) = 0 then 0 else (Sum(CASE WHEN 正负 = -1 THEN 数量 ELSE 0 END)*-1)/(Sum(CASE WHEN 正负 = 1 THEN 数量 ELSE 0 END)*1.0) end),2) As [出库率] From 单据详情 Inner JOIN 单据列表 ON 单据列表.[单据编号] = 单据详情.[单据编号] Where '+@FilterStr+' Group By '+@FieldStr+' '+@HavingStr+' Order by '+@OrderStr+''
Exec sp_executesql @sql

2.调用方法(传统)
Dim cmd As New SQLCommand
cmd.Connection Name = "ClothData"
cmd.CommandText = "Exec GroupStorePro,'参数1','参数2','参数3','参数4'"
库存查询表 = cmd.ExecuteReader
Tables("库存查询_TablePageBill").DataSource = 库存查询表
库存查询表为全局变量datatable

3.调用方法(新发现)
Tables("库存查询_TablePageBill").Fill("Exec GroupStorePro,'参数1','参数2','参数3','参数4'","PClothData",True)
4.存储过程中select及where 用到的文本字段建非聚集索引,可成倍提高查询速度。

---------------------------------------------------
堪误 :  "Exec GroupStorePro,'参数1','参数2','参数3','参数4'"   写法错误,红色逗号处应为空格,也就是说 过程名与 参数要用空格分开
正确写法"Exec GroupStorePro   '参数1','参数2','参数3','参数4'"  


[此贴子已经被作者于2014-11-26 13:10:34编辑过]

 回到顶部