存储过程与视图适用

DECLARE @DBName VARCHAR(200);
DECLARE @ProcName VARCHAR(200)='w_sp_Sms_ExpeOrKeepEmpl';
DECLARE C_TABLES CURSOR FAST_FORWARD FOR
SELECT NAME
FROM MASTER..SYSDATABASES
WHERE NAME LIKE 'AB%' OR NAME LIKE 'DF%' OR NAME='ManChengZhuanYeSL'
ORDER BY NAME; OPEN C_TABLES;
FETCH NEXT FROM C_TABLES INTO @DBName;
WHILE @@FETCH_STATUS=0
BEGIN -- 不能使用OBJECTPROPERTY方法和sysobjects表判断存储过程,必须先USE数据库后才能查到
IF OBJECT_ID('[' + @DBName + '].[dbo].[' + @ProcName + ']') IS NOT NULL
BEGIN
PRINT @DBName; -- 打印成功操作数据库,错误可在信息查看(普通错误直接提示,致命错误直接终止)
EXEC('
USE [' + @DBName + '];
EXEC(''
-- 单引号1个换4个 -- 可替换成视图
ALTER PROC [dbo].[' + @ProcName + ']
@BillGuid char(36)
AS
SELECT
a.BillGuid,d.EmplPhone,
(''''单号''''+c.BillNo+'''' / ''''+c.MemberName+''''[''''+c.Customer+'''']'''') as FirstData,
(b.ItemName+''''[实收''''+CONVERT(varchar(100),b.ItemAmount)+''''元]'''') as Keyword1Data,
CONVERT(INT, b.ItemCount) as Keyword2Data,
c.CheckoutTime as Keyword3Data,
(a.EmplNo+''''_''''+a.EmplName+''''(''''+e.LevelName+'''')'''' + Char(13) + Char(10) +(case when a.AssignMark=1 then ''''指定'''' else ''''轮牌'''' end) +'''':业绩 ''''+CONVERT(varchar(100),a.Perfor)+'''' / 提成 ''''+CONVERT(varchar(100),(a.BasicRoya+a.AssignRoya))+'''' / 创单 ''''+CONVERT(varchar(100),a.InventRoya)
+ Char(13) + Char(10)+ ''''付款方式:'''' + ISNULL(STUFF((SELECT '''' / '''' + PaymentName + '''' '''' + CONVERT(VARCHAR, PayMoney) FROM View_MergeExpePayment WHERE BillGuid=@BillGuid FOR XML PATH('''''''')), 1, 3, ''''''''), ''''无'''')) as Keyword4Data,
'''''''' as RemarkData
FROM View_MergeExpeEmpl as a
INNER JOIN View_MergeExpeItem as b on a.ExpeItemGuid=b.ExpeItemGuid AND b.CheckoutMark=3 AND b.DeleteMark=0
INNER JOIN View_MergeExpeBill as c on a.BillGuid=c.BillGuid AND c.CheckoutMark=3 AND c.DeleteMark=0
INNER JOIN SalonEmplBasic as d on a.EmplGuid=d.EmplGuid
INNER JOIN SalonEmplLevel e on a.LevelGuid=e.LevelGuid AND a.StoresGuid=e.StoresGuid
WHERE a.BillGuid=@BillGuid AND a.CheckoutMark=3 AND a.DeleteMark=0
UNION ALL
SELECT a.BillGuid,d.EmplPhone,
(''''单号''''+b.BillNo+'''' / ''''+e.MemberName+''''[''''+b.VipNo+'''']'''') as FirstData,
(case when a.KeepType=1 then ''''开卡'''' else ''''充值'''' end)as Keyword1Data,
1 as Keyword2Data,
b.KeepTime as Keyword3Data,
(c.EmplNo+''''_''''+c.EmplName+Char(13) + Char(10)+''''业绩 ''''+CONVERT(varchar(100),a.PerforMoney)+'''' / 提成 ''''+CONVERT(varchar(100),a.RoyaMoney)
+Char(13) + Char(10)+''''付款方式:'''' + ISNULL(STUFF((SELECT '''' / '''' + PaymentName + '''':'''' + CONVERT(VARCHAR, PayMoney) FROM SalonKeepPayment WHERE BillGuid=@BillGuid FOR XML PATH('''''''')), 1, 3, ''''''''), ''''无'''')) as Keyword4Data,
'''''''' as RemarkData
FROM SalonKeepEmpl as a
INNER JOIN SalonKeepBill as b on a.BillGuid=b.BillGuid
INNER JOIN SalonEmpl as c on a.EmplGuid=c.EmplGuid
INNER JOIN SalonEmplBasic as d on c.EmplGuid=d.EmplGuid
INNER JOIN SalonMember as e on b.MemberGuid=e.MemberGuid
WHERE a.BillGuid=@BillGuid; '')
');
END;
FETCH NEXT FROM C_TABLES INTO @DBName;
END
CLOSE C_TABLES;
DEALLOCATE C_TABLES;

注:使用SP_MSFOREACHDB受2000个字符限制,不得不改用游标

[SQL]批量修改存储过程视图的更多相关文章

  1. sqlserver 批量删除存储过程和批量修改存储过程的语句

    sqlserver 批量删除存储过程和批量修改存储过程的语句- sqlserver 批量删除存储过程和批量修改存储过程的语句,需要的朋友可以参考下. - 修改: 复制代码 代码如下: declare ...

  2. sql批量修改wordpress文章发布时间

    有时为了体现wordpress文章的更新程度,会在后台那边重新设置发布时间,有没更简单的方法呢?用sql批量修改wordpress文章发布时间怎么操作呢? UPDATE `wp_posts` SET ...

  3. sql批量修改wordpress网站的文章发布状态

    wordpress批量导入文章的时候,有些文章的状态可能会缺失,例如“mis scheduled”.draft.future等几种状态,如何用sql批量修改wordpress网站的文章发布状态呢? 点 ...

  4. Sql批量修改帝国cms文章发布时间(需unix时间,否则会变为1970-01-01)

    在迁移网站时,有时我们需要将帝国cms文章发表时间批量修改为当前时间,在帝国cms后台→系统设置→备份与恢复数据→执行sql语句: update phome_ecms_news set newstim ...

  5. sql批量修改插入数据

    1.批量修改 select 'update 读者库 set 单位代码='''+新单位代码+''' where 单位代码='''+单位代码+'''' from 读者单位 ,)<'L' and is ...

  6. MS SQL 批量给存储过程/函数授权

    在工作当中遇到一个类似这样的问题:要对数据库账户的权限进行清理.设置,其中有一个用户Test,只能拥有数据库MyAssistant的DML(更新.插入.删除等)操作权限,另外拥有执行数据库存储过程.函 ...

  7. SQL 批量修改表结构

    项目中发现一批语言表的某个字段设的值太小了需要增大,因为涉及到很多张表,所以采用游标一张张的处理. 代码很简单 ) ) DECLARE LangTable CURSOR FOR SELECT name ...

  8. SQL批量修改表名

    SELECT NAME FROM SYS. ALL_OBJECTS WHERE TYPE= 'U' ORDER BY MODIFY_DATE DESC --查询所有表名 SELECT NAME FRO ...

  9. Sql批量修改语句

    修改某个数字类型字段 SET @num = 10000000000001; #定义初始化变量参数 UPDATE ckys_me #更新的表 SET openid = (@num := @num+1) ...

随机推荐

  1. Python循环_for&while

    格式:for x in xs['James','Lily','Candy']: print(x) —————————————————————————————————— for循环就是把每个元素代入变量 ...

  2. linux一些工具的安装(二)

    一.Linux下安装lrzsz上传下载工具 1:使用yum安装 yum -y install lrzsz  要有网络才行 输入命令:rz启动文件上传 2:手动编译安装 1. 下载安装包,wget ht ...

  3. C putchar() 和 getchar()

    C 库函数 int getchar(void)   从 终端输入获取一个字符 : 返回值:该函数以无符号 char 强制转换为 int 的形式返回读取的字符,如果到达文件末尾或发生读错误,则返回 EO ...

  4. webRTC中音频相关的netEQ(二):数据结构

    上篇(webRTC中音频相关的netEQ(一):概述)是netEQ的概述,知道了它主要是用于解决网络延时抖动丢包等问题提高语音质量的,也知道了它有两大单元MCU和DSP组成.MCU 主要是把从网络收到 ...

  5. 在思科模拟器上配置AAA认证

    1.实验拓扑 2.检测用户之间连通性 PC2 ping PC-A PC-C  ping   PC-A 3.路由及服务器配置 R1:在路由器R1上配置一个本地用户账号并且利用本地AAA通过console ...

  6. uWSGI的配置与发布

    参考:   https://www.cnblogs.com/pyyu/p/9481344.html 一.什么是wsgi, uwsgi, uWSGI wsgi 全称web server gateway ...

  7. 填坑:Java 中的日期转换

    我们之前讨论过时间,在Java 中有一些方法会出现横线?比如Date 过期方法. 参考文章:知识点:java一些方法会有横线?以Date 过期方法为例 Java中的日期和时间处理方法 Date类(官方 ...

  8. Docker学习系列之一——安装篇

    一.目的 Docker是目前非常流行的虚拟技术,在云计算领域得到了广泛的应用.国内的阿里.京东等大厂都非常普遍地应用了Docker.本文记录了Docker的基本安装过程及最终运行结果,以期备忘,及和同 ...

  9. js判断是否安装某个android app,没有安装下载该应用(websocket通信,监听窗口失去焦点事件)

    现在经常有写场景需要提示用户下载app, 但是如果用户已经安装,我们希望是直接打开app. 实际上,js是没有判断app是否已经安装的方法的,我们只能曲线救国. 首先,我们需要有call起app的sc ...

  10. sCMOS相机调试参考资料

    sCMOS相机调试参考资料 实验室调试sCMOS传感器,特此记录一下网上搜集的资料. 来自比利时的AXIOM开源相机公司:https://wiki.apertus.org/index.php/Sens ...