本帖最后由 liuyang 于 2016-6-15 11:55 编辑
概要:不同项目,产品的需求不同,所以在脚本里面的存储过程也会有不一样的改变,在不改变原来存储过程的基础上,就需要加一个分支来区别不同项目
一、项目分支视频示例:
二、文档说明
1、打开新DB脚本,找到你所要改的脚本,然后打开该脚本的目录
2、在目录里复制出来一条,后缀写上你的项目编号(例如:FJHX),保存后把该脚本拖到DB脚本管理里
3、在脚本信息里
名称:与原来的脚本名称一致,把写的后缀(例:FJHX)去掉 项目:输入项目编号(FJHX)选择你的项目 文件名:你在目录里写的什么就是什么,不需要改变 保存之后速查,你查不到你刚刚新增的脚本是因为你选的是仅当前项目,
所以在高级下面把【仅当前项目勾选掉】就可以查到该单据号的所有脚本然后打开这新增的脚本,写入你的脚本提交同步就可以了
同步时,Svn未同步,不允许同步,所以要先同步Svn
【同步选中项】同步你选中的这个脚本
【同步所有】同步所有的脚本
【打开文件】打开脚本的sql,对进行进行修改
【打开目录】查看该脚本的目录
UI显示与控制 Svn提交下拉里也有很多功能 【SVNUpdata】SVN更新 【重新生成脚本】脚本重新生成 【自动规范代码】自动整理不规范的代码 【添加调试代码】在代码里加入调试代码,方便查看错误信息的准确点在哪 【复制到产品】复制该脚本到其他产品,填写产品名称 【剪切到产品】剪切该脚本到其他产品,填写产品名称 【打开文件目录】和界面左侧索引部分打开目录一样 【打开文件】和界面左侧索引部分打开文件一样
三、update更新
单表更新
UPDATE A
SET bUsable=1
FROM dbo.saUser A
WHERE A.iIden=1
多表更新
①UPDATE A
SET bUsable=1
FROM dbo.saUser A
JOIN dbo.pbCompany B(NOLOCK) ON B.iIden=A.iCompanyId
WHERE B.iIden=1 AND A.sUserNo='caizh'
②UPDATE A
SET sUserName=B.sName
FROM dbo.saUser A
JOIN dbo.pbUser B(NOLOCK) ON B.sUserNo=A.sUserNo
WHERE A.bUsable=1 AND B.bUsable=1
注意:多表更新时,需要更新的表不添加NOLOCK,其它查询表要添加NOLOCK
四、UPDATE中变量的应用
[a]Update语法中的SET中允许使用@变量,执行顺序是先执行@变量的计算,再执行字段的写入
示例:要求将年龄大于20岁的学生的年龄+1①UPDATE A
SET iAge+=1
FROM dbo.Student A
WHERE A.iAge>20
②UPDATE A
SET @i=A.iAge
,iAge=@i+1
FROM dbo.saUser A
WHERE A.iAge>20
③UPDATE A
SET iAge=@i+1
,@i=A.iAge
FROM dbo.saUser A
WHERE A.iAge>20 注意:以上三段SQL效果完全等同
【c】问题1:请取出#File表中的文件名的串联 i. SELECT sFile='D:\Work\DB\A.sql'
ii. INTO #File
iii. INSERT INTO #File
iv. SELECT sFile='D:\Work\DB\Procedure\B.cs'
v. 要求使用一条Update语句,去除文件名中的路径,执行后表中两行数据分别为: A.sql,B.cs
vi. 答案如下: DECLARE @i INT=0,@s NVARCHAR(MAX)=''
UPDATE #File
SET @s=REVERSE(sFile)
,@i=CHARINDEX('\',@s)
,@s=REVERSE(LEFT(@s,@i-1))
,sFile=@s 【d】问题2:出库摊销问题 五、脚本内容
大概过程
--XML转为临时表
EXEC dbo.sppbModifiedXMLToTempTable @sXML=@sXML,@sTempTableList='#sdLteOrderHdr_18378,#sdLteOrderDtl_18378'
--数据保存到表(临时表作为参数传入)
EXEC dbo.sppbGlobalBatchSaveTable @sTableName='sdLteOrderHdr',@sTempTable='#sdLteOrderHdr_18378'
,@iUserId=@iUserId 常见脚本示例: --客户联系人 数据导出Excel文件
BEGIN TRY
SET NOCOUNT ON;
IF ISNULL(@sKeyList,0x)=0x
BEGIN
SELECT [公司名称]=B.sCustomerFullName
,[联系人]=A.sContactName
,[地址]=A.sContactAddress
,[职位]=A.sJobTitle
,[电话]=A.sContactTel
FROM dbo.pbCustomerContact A(NOLOCK)
JOIN dbo.pbCustomer B(NOLOCK) ON B.iIden=A.iHdrId
WHERE A.bUsable=1
END
ELSE
BEGIN
SELECT [公司名称]=B.sCustomerFullName
,[联系人]=A.sContactName
,[地址]=A.sContactAddress
,[职位]=A.sJobTitle
,[电话]=A.sContactTel
FROM dbo.pbCustomerContact A(NOLOCK)
JOIN dbo.pbCustomer B(NOLOCK) ON B.iIden=A.iHdrId
WHERE A.bUsable=1 AND A.iIden IN (SELECT Item FROM dbo.fnpbConvertStringToTable(@sKeyList,','))
END
END TRY--客户联系人 Excel数据导入BEGIN TRY
SET NOCOUNT ON;
IF OBJECT_ID(N'tempdb..#pbCustomerContact_19831') IS NOT NULL DROP TABLE #pbCustomerContact_19831
IF ISNULL(@sXML,0x)=0x
RETURN
DECLARE @xml XML=@sXML,@s NVARCHAR(MAX)=0x
SELECT sCustomerName=ISNULL(A.Node.value('(./公司名称)[1]','nvarchar(100)'),0x)
,sContactAddress=ISNULL(A.Node.value('(./地址)[1]','nvarchar(200)'),0x)
,sContactName=ISNULL(A.Node.value('(./联系人)[1]','nvarchar(50)'),0x)
,sJobTitle=ISNULL(A.Node.value('(./职位)[1]','nvarchar(20)'),0x)
,sContactTel=ISNULL(A.Node.value('(./电话)[1]','nvarchar(20)'),0x)
,iHdrId=CONVERT(INT,0)
INTO #pbCustomerContact_19831
FROM @xml.nodes('//Row') A(Node)
UPDATE A
SET iHdrId=B.iIden
FROM #pbCustomerContact_19831 A
JOIN dbo.pbCustomer B(NOLOCK) ON B.sCustomerFullName=A.sCustomerName
IF @iUpdateStatus & 2 >0
BEGIN
UPDATE A
SET sContactAddress=B.sContactAddress
,sJobTitle=B.sJobTitle
,sContactTel=B.sContactTel
FROM dbo.pbCustomerContact A
JOIN #pbCustomerContact_19831 B ON B.iHdrId=A.iHdrId AND B.sContactName=A.sContactName
END
IF @iUpdateStatus & 1 >0
BEGIN
INSERT INTO dbo.pbCustomerContact
(iIden,iHdrid,sContactName,sContactAddress,sContactTel,bUsable,sJobTitle)
SELECT iIden=NEXT VALUE FOR dbo.SEQ_NewIden,A.iHdrid,A.sContactName
,A.sContactAddress,A.sContactTel,bUsable=1,A.sJobTitle
FROM #pbCustomerContact_19831 A
WHERE NOT EXISTS(SELECT TOP 1 1 FROM dbo.pbCustomerContact A1(NOLOCK)
WHERE A1.iHdrId=A.iHdrId AND A1.sContactName=A.sContactName)
END
IF OBJECT_ID(N'tempdb..#pbCustomerContact_19831') IS NOT NULL DROP TABLE #pbCustomerContact_19831
END TRY
--生成单据号
IF @iUpdateStatus=1
BEGIN
SELECT @iProductTypeId=iProductTypeId FROM #sdLteOrderHdr_18378
EXEC dbo.sppbNewBillNo @iFormulaId=2025,@sNewBillNo=@sBillNo OUTPUT
,@sParamNameList='iProductTypeId',@p1=@iProductTypeId
UPDATE A
SET sBillNo=@sBillNo
FROM #sdLteOrderHdr_18378 A
END
ELSE IF @iUpdateStatus<>4
BEGIN
SELECT TOP 1 @sBillNo=A.sBillNo
FROM dbo.sdLteOrderHdr A(NOLOCK)
WHERE A.iIden=@iBillId
END |