存储过程命名习惯:跟窗口名保持一致。ALTER PROCEDURWE [dbo].[WD_Login]
声明变量初始化值要注意;字符串varchar、char、日期类型datetime等的初始值;数值double、decimal ,整形int等初始值0。@type char(200)=’’,@departure_date DATETIME=’’,@operator_no bit=0,@as_gender_id INT=0, char,int,datetime,bit是不论大小写。
命名习惯:事件+实现功能(验证登录(@type=‘btnLogin_Click_Login’))。
BEGIN和 END是一对,不可以写漏或者多写都会报错。
查询存储过程,通过某某表字段查询,为什么是倒叙排序而不是正叙排序,如果新增数据肯定是最后一行数据,数据多的话不方便查看是否新增成功。
IF(@type='limitsOfPower_Loaded_SelectPermissionGroup')
BEGIN
SELECT ROW_NUMBER ()over(order by p_group_id DESC) as number,--序号
p_group_id,--ID
RTRIM(p_name) AS p_name, --姓名
RTRIM(modular_detail_id) AS p_group,
RTRIM(remarks) AS remarks
FROM t_m_permission_group
ORDER BY p_group_id DESC --倒叙排序
END
新增存储过程,验证重复性。
EXISTS用于检查子查询是否至少会返回一行数据,该子查询实际上并不返回任何数据,而是返回值True或False。根据员工编号和身份证号判断数据是否存在。如果涉及到二个表数据新增(多表新增)操作:邻居某某表有某某表的ID做外键 :1、先新增某某表,要返回新增的某某ID(借用SELECT @@IDENTITY );2、再新增邻居站点表。
BEGIN
if EXISTS(SELECT 0 FROM t_staff WHERE staff_number=@staff_number or id_card=@id_card)
if exists(select 0 from t_m_permission_group where p_name=@p_name)
begin
return
end
else
BEGIN TRAN
INSERT t_m_permission_group(p_name, modular_detail_id, remarks)
VALUES(@p_name, @p_group, @remarks)
COMMIT TRAN
END
删除存储过程,判断用户是否正在使用该权限
BEGIN
if exists(select 0 from t_operators where permission_group_id=@p_group_id)
begin
return
end
else
begin
DELETE t_m_permission_group
WHERE t_m_permission_group.p_group_id=@p_group_id
end
END
修改存储过程,验证重复性(不跟自身比较)。
用于检查子查询是否至少会返回一行数据,该子查询实际上并不返回任何数据,而是返回值True或False。EXISTS 指定一个子查询,检测 行 的存在。
事务(Transaction)是并发控制的单位,是用户定义的一个操作序列。这些操作要么都做,要么都不做,是一个不可分割的工作单位。
1、事务其实很简单 首先要知道事务的关键的东西
BEGIN TRAN 开始事务
COMMIT TRAN 提交事务
ROLLBACK TRAN 回滚事务
@@ERROR 全局变量,用来返回一些标志码,比如:commit tran返回为0,rollback tran返回 非0。
BEGIN
if exists(select 0 from t_m_permission_group where p_name=@p_name and p_group_id!=@p_group_id)
begin
return
end
else
BEGIN TRAN
UPDATE t_m_permission_group
SET p_name=@p_name, modular_detail_id=@p_group, remarks=@remarks
WHERE t_m_permission_group.p_group_id=@p_group_id
COMMIT TRAN
END
下拉框存储过程
IF(@Type='InsertStaffInformation_Loaded_SelectGender')
SELECT RTRIM(detailed_attribute_gather_id) AS Gender_id,
RTRIM(detailed_attribute_gather_name) AS Gather_name
FROM t_detailed_attribute_gather
WHERE t_detailed_attribute_gather.attribute_gather_id = 11
union
Select 0,'---请选择---' from t_detailed_attribute_gather
自定义:页面显示的内容;也可以自定义字段颜色
RTRIM(case WHEN t_train.using_no=‘true’ THEN ‘停用’ ELSE ‘使用中’ END) AS using_no,
RTRIM(case WHEN t_train.disable=‘true’ THEN ‘有效’ ELSE ‘无效’ END) AS disable,
在Spl中将varchar值’1,2,3,4,5,6’转换成数据类型 int。
WHERE charindex(’,’+rtrim(t_modular_operation.modular_detail_id)+’,’,’,’+@PermissionGroup+’,’)> 0
SQL语句技巧:查询存在一个表而不在另一个表中的数据记录:使用 not in
WHERE t_staff.staff_id not in (SELECT staff_id from t_operators)and t_staff.operator_no=1
SQL语句技巧:查询存在一个表而不在另一个表中的数据记录:使用 not in(还没有分配权限的用户)
WHERE t_staff.staff_id not in (SELECT staff_id from t_operators)and t_staff.operator_no=1 and staff_name=@staff_name