垮库只能读操作,写操作需要设置权限。

USE [jdddb]
GO
/****** Object: StoredProcedure [dbo].[proc_LYOrderCancel] Script Date: 02/07/2017 11:18:55 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author: 赵伟
-- Create date: 20170122
-- Description: 疗养宝订单取消
-- =============================================
--EXEC proc_LYOrderCancel '15201701201037185748','xf0057',17,1,37125,141129,'2017-01-20',1,0
ALTER PROCEDURE [dbo].[proc_LYOrderCancel]
(
@orderSn VARCHAR(100),
@userName NVARCHAR(100), --用户名称
@orderType INT, --订单类型
@status INT, --订单当前状态
@jdid INT, --酒店ID
@fjlxid INT, --房间ID
@idate DATETIME, --预订时间
@num INT , --入住天数,用于减房态
@flag INT OUTPUT --返回标识
)
AS
BEGIN
SET NOCOUNT ON;
BEGIN TRY
IF EXISTS(SELECT srvname FROM MASTER.DBO.SYSSERVERS WHERE SrvName='172.18.105.63')
BEGIN
EXEC SP_DROPSERVER '172.18.105.63','DropLogins'
END
EXEC sp_addlinkedserver '172.18.105.63',N'SQL Server'
EXEC sp_addlinkedsrvlogin '172.18.105.63', 'false', NULL, 'test', 'xinfuka' BEGIN TRANSACTION IF EXISTS(SELECT Id FROM [172.18.105.63].[Xinfu0816].[dbo].[Orders] WHERE OrderType=@orderType AND OrderSn=@orderSn AND UserName=@userName)
BEGIN
UPDATE [172.18.105.63].[Xinfu0816].[dbo].[Orders] SET [Status]=4 WHERE OrderType=@orderType AND OrderSn=@orderSn AND UserName=@userName
END IF EXISTS(SELECT 1 FROM dbo.JD_Orders WHERE orderType=@orderType AND OrderSn=@orderSn AND ydr=@userName)
BEGIN
UPDATE dbo.JD_Orders SET zt=4 WHERE orderType=@orderType AND OrderSn=@orderSn AND ydr=@userName
END IF(@status!=2)--待支付的不需要减房态
BEGIN DECLARE @col VARCHAR(100);
SET @col ='sl'+ CONVERT(varchar(100),DATEPART(DAY,@idate));
IF EXISTS(SELECT id FROM dbo.JD_FT WHERE jdid=@jdid AND fjlxid=@fjlxid AND iyear=DATEPART(YEAR,@idate) AND imonth=DATEPART(MONTH,@idate))
BEGIN
DECLARE @sql VARCHAR(1000);
SET @sql='UPDATE dbo.JD_FT SET '+@col+'='+@col+'-'+CONVERT(VARCHAR(10),@num)+' WHERE jdid='+CONVERT(VARCHAR(10),@jdid)+' AND fjlxid='+CONVERT(VARCHAR(10),@fjlxid)+' AND iyear='+CONVERT(VARCHAR(10),DATEPART(YEAR,@idate))+' AND imonth='+CONVERT(VARCHAR(10),DATEPART(MONTH,@idate))+''
PRINT @sql;
EXEC(@sql);
--UPDATE dbo.JD_FT SET @col=@col-@num
--WHERE jdid=@jdid AND fjlxid=@fjlxid AND iyear=DATEPART(YEAR,@idate) AND imonth=DATEPART(MONTH,@idate)
END
END SET @flag=1;
COMMIT TRANSACTION
END TRY
BEGIN CATCH
SET @flag=-1;
ROLLBACK TRANSACTION
/*定义要返回的异常信息变量*/
DECLARE @ErrorMessage NVARCHAR(4000);
DECLARE @ErrorSeverity INT;
DECLARE @ErrorState INT;
/*收集可能出现的异常信息*/
SELECT
@ErrorMessage = ERROR_MESSAGE(),
@ErrorSeverity = ERROR_SEVERITY(),
@ErrorState = ERROR_STATE();
/*抛出异常*/
RAISERROR (@ErrorMessage, -- Message text.
@ErrorSeverity, -- Severity.
@ErrorState -- State.
);
END CATCH
END

sqlserver跨库操作数据的更多相关文章

  1. SqlServer跨库查询

    由于业务的拆分,数据库拆分为两种作用: 汇总数据库(Master,头节点数据库), 子节点数据库(Compute Node,计算子节点数据库) 这样,就设计到子节点访问头节点数据库中的某张汇总表,这种 ...

  2. SQLServer跨库查询--分布式查询

    出处:http://www.cnblogs.com/doosmile/archive/2012/03/16/2400646.html --用openrowset连接远程SQL或插入数据 --如果只是临 ...

  3. SQLServer跨库查询--分布式查询(转载)

    --用openrowset连接远程SQL或插入数据 --如果只是临时访问,可以直接用openrowset --查询示例 select * from openrowset('SQLOLEDB' ,'sq ...

  4. SqlServer 跨库访问

    同实例跨库 只需要 库名.dbo.表 dbo可省略 如: use Test select * from rdrecords select * from oa.dbo.UserInfo 不同实例与不同i ...

  5. SQLServer 跨库查询实现方法

    不使用链接的服务器名,而提供特殊的连接信息,并将其作为四部分对象名的一部分 本文给出一条 SQL 语句用于展示在同一名服务器上,不同的数据库间查询,注意当前连接用户要对两个库都有权限SQL Serve ...

  6. Postgresql ODBC驱动,用sqlserver添加dblink跨库访问postgresql数据库

    在同样是SQLserver数据库跨库访问时,只需要以下方法 declare @rowcount int set @rowcount =(select COUNT(*) from sys.servers ...

  7. 关于SqlServer远程跨库修改数据

    今天遇到一个需求需要修改远程服务器上的数据,如何直接修改,并且垮库,跨库简单,直接加上数据库名字,远程的话则需要创建链接服务器,具体步骤如下: --创建链接服务器  exec sp_addlinked ...

  8. sqlserver 多库查询 sp_addlinkedserver使用方法(添加链接服务器)

    sqlserver 多库查询 sp_addlinkedserver使用方法(添加链接服务器) 我们日常使用SQL Server数据库时,经常遇到需要在实例Instance01中跨实例访问Instanc ...

  9. SQL Server跨库查询

    方式一: 语句 SELECT * FROM 数据库A.dbo.表A a, 数据库B.dbo.表B b WHERE a.field=b.field "DBO"可以省略 如 SELEC ...

随机推荐

  1. 在Winform中屏蔽UnityWebPlayer的右键以及自带Logo解决方案整理

    根据项目的需要,对已经完成的Unity三维模型以及游戏要使用Winform进行包装,也就是使用Winform做一层外壳.因此在展示Unity的时候使用到了UnityWebPlayer这个插件,对于此插 ...

  2. 如何卸载oracle11g

    方法/步骤   .关闭oracle所有的服务.可以在windows的服务管理器中关闭:   打开注册表:regedit 打开路径:HKEY_LOCAL_MACHINE\SYSTEM\CurrentCo ...

  3. python操作MySQL数据库的三个模块

    python使用MySQL主要有两个模块,pymysql(MySQLdb)和SQLAchemy. pymysql(MySQLdb)为原生模块,直接执行sql语句,其中pymysql模块支持python ...

  4. Jmeter启动闪退

    背景:使用Jmeter进行性能测试脚本开发,实现Jmeter接口开发Java请求 问题再现: 1.在官网上下载Jmeter3.2版本,打开jmeter.bat,启动成功 2.在IDEA中创建测试项目和 ...

  5. WebSphere 安装部署,发布web应用

    转: WebSphere 安装部署,发布web应用 2017年11月20日 23:51:08 greensure 阅读数 20099   版权声明:本文为博主原创文章,遵循CC 4.0 by-sa版权 ...

  6. BUUCTF-writeup

    Reverse RSA 使用openssl模块 rsa -pubin -text -modulus -in pub.key得到n值,在 factordb.com上分解大素数得到p,q值,脚本生成pri ...

  7. SaaS领域如何分析收入增长?

    SaaS领域如何分析收入增长? 今天我们试着将其模式运用到收入增长上进行分析.这对常规收入的计算会极有帮助,例如企业级应用软件(SaaS)或消费者订阅业务. 列举某公司通过月度订阅获得营收为例,为了更 ...

  8. RegexBuddy 4.7.0 x64 评估试用到期,无限试用的办法

    http://www.cnblogs.com/inrg/p/6491043.html 最后对比发现,在注册表 HKEY_USERS 节点下存在一个用户的项,形如 "S-1-5-21-1609 ...

  9. shell变量默认值

    ${var:-string},${var:+string},${var:=string},${var:?string} 1. ${var:-string}和${var:=string}:若变量var为 ...

  10. Flutter之Dio引入和简单的Get/Post请求

    先在pubspec.yaml中引入Dio包如图所示 认识Dio库:dio是一个dart的 http请求通用库,目前也是大陆使用最广泛的库,国人开发,完全开源. flutter的插件包管理:学了引入di ...