标签云
asm恢复 bbed bootstrap$ dul In Memory kcbzib_kcrsds_1 kccpb_sanity_check_2 kfed MySQL恢复 ORA-00312 ORA-00607 ORA-00704 ORA-01110 ORA-01555 ORA-01578 ORA-08103 ORA-600 2131 ORA-600 2662 ORA-600 2663 ORA-600 3020 ORA-600 4000 ORA-600 4137 ORA-600 4193 ORA-600 4194 ORA-600 16703 ORA-600 kcbzib_kcrsds_1 ORA-600 KCLCHKBLK_4 ORA-15042 ORA-15196 ORACLE 12C oracle dul ORACLE PATCH Oracle Recovery Tools oracle加密恢复 oracle勒索 oracle勒索恢复 oracle异常恢复 Oracle 恢复 ORACLE恢复 ORACLE数据库恢复 oracle 比特币 OSD-04016 YOUR FILES ARE ENCRYPTED 勒索恢复 比特币加密文章分类
- Others (2)
- 中间件 (2)
- WebLogic (2)
- 操作系统 (102)
- 数据库 (1,671)
- DB2 (22)
- MySQL (73)
- Oracle (1,533)
- Data Guard (52)
- EXADATA (8)
- GoldenGate (21)
- ORA-xxxxx (159)
- ORACLE 12C (72)
- ORACLE 18C (6)
- ORACLE 19C (14)
- ORACLE 21C (3)
- Oracle 23ai (7)
- Oracle ASM (65)
- Oracle Bug (8)
- Oracle RAC (52)
- Oracle 安全 (6)
- Oracle 开发 (28)
- Oracle 监听 (28)
- Oracle备份恢复 (560)
- Oracle安装升级 (92)
- Oracle性能优化 (62)
- 专题索引 (5)
- 勒索恢复 (78)
- PostgreSQL (18)
- PostgreSQL恢复 (6)
- SQL Server (27)
- SQL Server恢复 (8)
- TimesTen (7)
- 达梦数据库 (2)
- 生活娱乐 (2)
- 至理名言 (11)
- 虚拟化 (2)
- VMware (2)
- 软件开发 (37)
- Asp.Net (9)
- JavaScript (12)
- PHP (2)
- 小工具 (20)
-
最近发表
- Kylin Linux 安装19c
- ORA-600 krse_arc_complete.4
- Oracle 19c 202410补丁(RUs+OJVM)
- ntfs MFT损坏(ntfs文件系统故障)导致oracle异常恢复
- .mkp扩展名oracle数据文件加密恢复
- 清空redo,导致ORA-27048: skgfifi: file header information is invalid
- A_H_README_TO_RECOVER勒索恢复
- 通过alert日志分析客户自行对一个数据库恢复的来龙去脉和点评
- ORA-12514: TNS: 监听进程不能解析在连接描述符中给出的SERVICE_NAME
- ORA-01092 ORA-00604 ORA-01558故障处理
- ORA-65088: database open should be retried
- Oracle 19c异常恢复—ORA-01209/ORA-65088
- ORA-600 16703故障再现
- 数据库启动报ORA-27102 OSD-00026 O/S-Error: (OS 1455)
- .[metro777@cock.li].Elbie勒索病毒加密数据库恢复
- 应用连接错误,初始化mysql数据库恢复
- RAC默认服务配置优先节点
- Oracle 19c RAC 替换私网操作
- 监听报TNS-12541 TNS-12560 TNS-00511错误
- drop tablespace xxx including contents恢复
分类目录归档:SQL Server
存储过程实现:更新、插入、删除、再插入
已经在空间上放了好几篇存储过程的东西了,本来这个不想再放上去了,但是想想,为了这个思路的完整性,还是把这个存储过程也给放上来
这次实现的是从回收站还原的功能,整体思路是,先更新所需的档案件号,然后复制到对应的部门表中,然后删除回收站表的数据,再把刚刚到部门表中的数据插入到总表中,使得部门的表和总表数据一致
ALTER PROC [dbo].[add_data_yes] @tablename varchar(30), @id INT, @jh INT AS declare @sql nvarchar(4000) SET @sql=N'update S_del set jh='+CAST(@jh AS VARCHAR(10))+N' where id='+CAST(@id AS VARCHAR(10))+N';INSERT INTO <a href="mailto:%27+@tablename+N%27" target="_blank">'+@tablename+N'</a> ( tm , jh , ajh , gjz , sjms , fsdd , fsrq , zyrw , psz , psrq , tgz , zrz , sc , ly , cjh , srz , flh , dph , bz , xpdx , xpgs , xpxs , scrid , scr , scsj , scbm , shr , shsj , ecbz , gdr , gdsj , xgsj , flag , ysurl , ysfile , xgurl , xgfile , xwurl , xwnr , textall ) SELECT tm , jh , ajh , gjz , sjms , fsdd , fsrq , zyrw , psz , psrq , tgz , zrz , sc , ly , cjh , srz , flh , dph , bz , xpdx , xpgs , xpxs , scrid , scr , scsj , scbm , shr , shsj , ecbz , gdr , gdsj , xgsj , flag , ysurl , ysfile , xgurl , xgfile , xwurl , xwnr , textall FROM S_del WHERE id='+CAST(@id AS varchar(10))+N';delete from S_del where id='+CAST(@id AS varchar(10))+N';insert into S_bm_all select * from <a href="mailto:%27+@tablename+N%27" target="_blank">'+@tablename+N'</a> where id=(select max(id) from <a href="mailto:%27+@tablename+N%27%29%27" target="_blank">'+@tablename+N')'</a> EXEC(@sql)
好了,以前是因为自己对存储过程没有入门,写了几个放在上面了,现在感觉对存储过程有了一点状态,不再放存储过程山来了(我感觉特别有意义的除外)
发表在 SQL Server
评论关闭
存储过程实现:更新、汇总、复制功能
在项目中,要对相片档案资料进行归档(案卷号、件号、题名、归档人、归档日期,归档标示),在归档过程中要用到全文检索(用一个字段保存全文实现),把该数据从部门表复制到总表中,即要实现更新、汇总、复制功能于一体的存储过程:
ALTER PROC [dbo].[guidang] @tablename varchar(30), @id int , @tm varchar(500), @jh int, @t DATETIME , @ajh INT, @gdr VARCHAR(10) AS DECLARE @sql VARCHAR(2000) SET @sql='update <a href="mailto:%27+@tablename+%27" target="_blank">' +@tablename+'</a> set flag='''+CAST(3 AS VARCHAR(1))+''',gdr='''+@gdr+''', gdsj='''+CAST(@t AS VARCHAR(25))+''',jh='+CAST(@jh AS varchar(10))+', ajh='+CAST(@ajh AS VARCHAR(10))+',tm='''+@tm+''',textall=tm+'+ '''|'''+'+isnull(gjz,'''')+'+'''|'''+'+isnull(gjz,'''')+'+'''|''' +'+isnull(fsdd,'''')+'+'''|'''+ '+isnull(zyrw,'''')+'+'''|'''+'+isnull(psz,'''')+'+'''|''' +'+isnull(tgz,'''')+' +'''|'''+'+isnull(zrz,'''')+'+'''|'''+'+isnull(srz,'''')+' +'''|'''+'+isnull(bz,'''')+'+'''|'''+'+isnull(scr,'''')+'+'''|'''+ '+isnull(shr,'''')+'+'''|'''+' +isnull(gdr,'''')where id='+CAST(@id AS VARCHAR(10))+';insert into S_bm_all select * from <a href="mailto:%27+@tablename+%27" target="_blank">' +@tablename+'</a> where id='+CAST(@id AS VARCHAR(10)) EXEC(@sql)
在这个编写过程中,如果汇总项中,有一项为null,就会得到textall为null,这个困惑了我很久,最后发现了问题在这,用isnull函数解决问题,还有一个细节问题,“‘”有表示转义的意思
发表在 SQL Server
评论关闭
动态复制一个表中一条数据到另一个表中(列不完全相同)(存储过程实现)
因为要用到回收站功能,删除一条记录,要先放到一个delete表中,以便以后恢复
要求:
1、delete表要比被删除表中多三项(用于表明删除用户,删除的是哪种用户表,删除该条数据在该用户表中的id)
2、用户表有多张(一个部门一张,但是一个部门又有多个用户,所有设计数据库时,回收站表只设置了一张,因为如果每一部门设置一张delete表,那么有很多跨部门操作,数据库最后终于一个用户的回收站里面记录整理起来很麻烦)
3、表中的记录项很多,有40多个属性,所有如果有程序来实现,数据量太大,会出现不可预期的错误,不得不用存储过程
因为自己对存储过程也不熟悉,一边写,一边学习,用了将近一天的时间,终于搞定了,其中主要难题:
1、数据存放到临时变量中,
2、对其中一个变量——表的调用
现在把存储过程放起来,也是对我自己一天工作的肯定,高手不要见笑
ALTER PROCEDURE [dbo].[copy_data] @tablename varchar(30), @t_id int , @u_id int as set nocount on declare @tm varchar(500) declare @jh int declare @ajh int declare @gjz varchar(100) declare @sjms varchar(5000) declare @fsdd varchar(100) declare @fsrq nchar(10) declare @zyrw varchar(1000) declare @psz varchar(20) declare @psrq nchar(10) declare @tgz varchar(50) declare @zrz varchar(50) declare @sc nchar(4) declare @ly varchar(8) declare @cjh varchar(20) declare @srz nchar(10) declare @flh int declare @dph nchar(10) declare @bz varchar(500) declare @xpdx bigint declare @xpgs nchar(10) declare @xpxs nchar(11) declare @scrid int declare @scr nchar(10) declare @scsj datetime declare @scbm int declare @shr nchar(10) declare @shsj datetime declare @ecbz varchar(500) declare @gdr nchar(10) declare @gdsj datetime declare @xgsj datetime declare @flag nchar(1) declare @ysurl varchar(100) declare @ysfile varchar(250) declare @xgurl varchar(100) declare @xgfile varchar(250) declare @xwurl varchar(500) declare @xwnr varchar(4000) declare @textall varchar(4000) declare @fei nvarchar(4000) set @fei=N'select @tm=[tm] ,@jh=[jh] ,@ajh=[ajh] ,@gjz=[gjz] ,@sjms=[sjms] ,@fsdd=[fsdd] ,@fsrq=[fsrq] ,@zyrw=[zyrw] ,@psz=[psz] ,@psrq=[psrq] ,@tgz=[tgz] ,@zrz=[zrz] ,@sc=[sc] ,@ly=[ly] ,@cjh=[cjh] ,@srz=[srz] ,@flh=[flh] ,@dph=[dph] ,@bz=[bz] ,@xpdx=[xpdx] ,@xpgs=[xpgs] ,@xpxs=[xpxs] ,@scrid=[scrid] ,@scr=[scr] ,@scsj=[scsj] ,@scbm=[scbm] ,@shr=[shr] ,@shsj=[shsj] ,@ecbz=[ecbz] ,@gdr=[gdr] ,@gdsj=[gdsj] ,@xgsj=[xgsj] ,@flag=[flag] ,@ysurl=[ysurl] ,@ysfile=[ysfile] ,@xgurl=[xgurl] ,@xgfile=[xgfile] ,@xwurl=[xwurl] ,@xwnr=[xwnr] ,@textall=[textall] from ['+@tablename+N'] where id='+CAST(@t_id AS varchar(10)) exec sp_executesql @fei, <a href="mailto:N%27@tm" target="_blank">N'@tm</a> varchar(500) OUT, @jh int OUT, @ajh int OUT, @gjz varchar(100) OUT, @sjms varchar(5000) OUT, @fsdd varchar(100) OUT, @fsrq nchar(10) OUT, @zyrw varchar(1000) OUT, @psz varchar(20) OUT, @psrq nchar(10) OUT, @tgz varchar(50) OUT, @zrz varchar(50) OUT, @sc nchar(4) OUT, @ly varchar(8) OUT, @cjh varchar(20) OUT, @srz nchar(10) OUT, @flh int OUT, @dph nchar(10) OUT, @bz varchar(500) OUT, @xpdx bigint OUT, @xpgs nchar(10) OUT, @xpxs nchar(11) OUT, @scrid int OUT, @scr nchar(10) OUT, @scsj datetime OUT, @scbm int OUT, @shr nchar(10) OUT, @shsj datetime OUT, @ecbz varchar(500) OUT, @gdr nchar(10) OUT, @gdsj datetime OUT, @xgsj datetime OUT, @flag nchar(1) OUT, @ysurl varchar(100) OUT, @ysfile varchar(250) OUT, @xgurl varchar(100) OUT, @xgfile varchar(250) OUT, @xwurl varchar(500) OUT, @xwnr varchar(5000) OUT, @textall varchar(5000) OUT', @tm OUT, @jh OUT, @ajh OUT, @gjz OUT, @sjms OUT, @fsdd OUT, @fsrq OUT, @zyrw OUT, @psz OUT, @psrq OUT, @tgz OUT, @zrz OUT, @sc OUT, @ly OUT, @cjh OUT, @srz OUT, @flh OUT, @dph OUT, @bz OUT, @xpdx OUT, @xpgs OUT, @xpxs OUT, @scrid OUT, @scr OUT, @scsj OUT, @scbm OUT, @shr OUT, @shsj OUT, @ecbz OUT, @gdr OUT, @gdsj OUT, @xgsj OUT, @flag OUT, @ysurl OUT, @ysfile OUT, @xgurl OUT, @xgfile OUT, @xwurl OUT, @xwnr OUT, @textall OUT; INSERT INTO [yx].[dbo].[S_del] ([t_id] ,[u_id] ,[u_t] ,[tm] ,[jh] ,[ajh] ,[gjz] ,[sjms] ,[fsdd] ,[fsrq] ,[zyrw] ,[psz] ,[psrq] ,[tgz] ,[zrz] ,[sc] ,[ly] ,[cjh] ,[srz] ,[flh] ,[dph] ,[bz] ,[xpdx] ,[xpgs] ,[xpxs] ,[scrid] ,[scr] ,[scsj] ,[scbm] ,[shr] ,[shsj] ,[ecbz] ,[gdr] ,[gdsj] ,[xgsj] ,[flag] ,[ysurl] ,[ysfile] ,[xgurl] ,[xgfile] ,[xwurl] ,[xwnr] ,[textall]) VALUES ( @t_id, @u_id, @tablename, @tm , @jh , @ajh , @gjz , @sjms , @fsdd , @fsrq , @zyrw , @psz , @psrq , @tgz , @zrz , @sc , @ly , @cjh , @srz , @flh , @dph , @bz , @xpdx , @xpgs , @xpxs , @scrid , @scr , @scsj , @scbm , @shr , @shsj , @ecbz , @gdr , @gdsj , @xgsj , @flag , @ysurl , @ysfile , @xgurl , @xgfile , @xwurl , @xwnr , @textall ) set nocount off
从企业管理器中直接导出来的,现在看看也没有什么难的哦,只是因为自己不熟悉,而使得自己在项目时间本来就是很紧张的情况下还因为这个而浪费了不少的时间。
发表在 SQL Server
评论关闭