关于数据库存储过程的学习
1、新建存储过程,某一阶段写完,执行后提示了“命令已成功完成”(在此之前从未把当前存储过程关闭过),再接着写完某一阶段或是修改,再执行的话,会报数据库已存在当前命名的存储过程的错。如下图所示:
解决方法是把“CREATE PROCEDURE WD_CommodityName”中的“CREATE”改为“ALTER”。
注意:报错后不可以直接关闭当前存储过程,必须是提示“命令已成功完成”才可以关闭当前存储过程。否则你再打开此存储过程时,会发现它没有保存我们在第一次提示“命令已成功完成”后所做的任何更改。
如想避免出现此种错误,我们在第一次提示“命令已经成功完成”时,就关闭当前存储过程,再重新打开即可。
2、存储过程的命名习惯最好跟窗口名保持一致,以便以后对此进行维护和修改时方便快捷的找到对应的地方(如做登录页面ALTER PROCEDURE [dbo].[WD_Login])。
3、声明变量初始值要注意:字符串varchar、char、日期类型datetime等的初始值是” ;
数值double、decimal ,整形int等初始值是0(如@type char(200)=”, @staff_id int=0)。
4、方法命名习惯:事件名(btnLogin_Click)+实现功能(Login)(如验证登录IF(@type=’btnLogin_Click_Login’))。
5、把某张表的ID作为序列号的语句是ROW_NUMBER() over(order by某张表表名.ID列列名) as序列号名。
6、为某张表的某列内容去空格的语句是RTRIM(某张表表名.某列列名)。注意:某些字段不能去空格,否则会造成属性不符的错(例如:出生日期、登记时间等)。
7、下图中的EXISTS指定一个子查询,检测“行”的存在。EXISTS用于检查子查询是否至少会返回一行数据,该子查询实际上并不返回任何数据,而是返回值True或False。
8、事务(Transaction)是并发控制的单位,是用户定义的一个操作序列。这些操作要么都做,要么都不做,是一个不可分割的工作单位。
事务其实很简单,首先要知道事务的关键的东西:
(1)BEGIN TRAN 开始事务
(2)COMMIT TRAN 提交事务
(3)ROLLBACK TRAN 回滚事务
9、@@ERROR 全局变量,用来返回一些标志码,比如:commit tran返回为0,rollback tran返回 非0。
10、从数据库中自定义页面上显示的内容:
语句:RTRIM(case WHEN t_site.stop_no=’true’ THEN ‘启用’ ELSE ‘停用’ END) AS stop_no
和语句:RTRIM(case WHEN t_site.stop_no=’true’ THEN ‘Blue’ ELSE ‘Red’ END) AS color,
意思是:当t_site.stop_no等于true时,那么值为字段’启用’且颜色为蓝色,否则值为字段’停用’且颜色为红色。
11、倒叙排序语句:ORDER BY 所需表表名.ID列列名 DESC
12、查询新增的ID语句:SELECT @@IDENTITY
13、使用in查询存在一个表且在另一个表中的数据记录;语句:WHERE t_staff.staff_id in (SELECT staff_id FROM t_operators) and t_staff.operator_no=1
14、使用not in查询存在一个表而不在另一个表中的数据记录;语句:WHERE t_staff.staff_id not in (SELECT staff_id FROM t_operators) and t_staff.operator_no=1
15、在Sql中将 varchar 值 ‘1,2,3,4,5,6’ 转换成数据类型 int的语句:WHERE charindex(‘,’+rtrim(t_modular_operation.modular_detail_id)+’,’,’,’+@PermissionGroup+’,’)>0