Sqlserver基础

变量

  • 变量声明
DECLARE @age;
  • 变量赋值
SET @age=2;

条件表达式

IF @age>1
BEGIN
    ......
END
ELSE
BEGIN
    ......
END

常用内置函数

  • GETDATE() 获取当前时间
  • NEWID() 获取随机编号
  • EXISTS(~)判断语句是否有结果 有返回true 没有返回false 与之对应的是NOT EXISTS
  • ......

存储过程

CREATE PROCEDURE [dbo].[PROCNAME](
@userId      NVARCHAR(50),
@resultValue NVARCHAR(100) OUTPUT) AS  --参数列表
DECLARE
@syncDateTime NVARCHAR(36), --变量列表
@rowQty NUMERIC,
@pBomPkgId NVARCHAR(50);
  
BEGIN

	SET XACT_ABORT ON;
	DECLARE @errorMessage NVARCHAR(4000), @trancount int,@logMessage NVARCHAR(2000);
	SET @trancount = @@TRANCOUNT;
    
	BEGIN TRY
		
		IF @trancount = 0 
			BEGIN TRAN; --开启事务
		
		DECLARE recTask CURSOR LOCAL FOR    --创建游标
		SELECT ID FROM TABLENAME

		OPEN recTask;   --开启游标
		FETCH NEXT FROM recTask INTO @Id    --指到第一项
		WHILE(@@FETCH_STATUS=0)
		BEGIN
			SET @logMessage='';
			
			EXEC PROCNAME2 @Id,@userId,@resultValue out;     --调用存储过程
			IF @resultValue!='Y'
			BEGIN
				SET @logMessage='XXX';
			END
			
			FETCH NEXT FROM recTask INTO @Id;   --游标下移
		END;
		CLOSE recTask;  --关闭游标
		DEALLOCATE recTask; --销毁游标
		
		SET @resultValue= 'Y';
		IF @trancount = 0 
			COMMIT TRAN;    --提交事务
	END TRY
	BEGIN CATCH
		SET @errorMessage = ERROR_MESSAGE();    --获取错误信息
		
		IF @trancount = 0 
			ROLLBACK TRAN;  --回滚事务
		RAISERROR(@errorMessage, 16, 1);    --抛出异常
	END CATCH;
END;

作业

  • 开启sqlserver代理
  • 创建作业
  • 设置计划 定期执行sql

链接服务器

  • 创建链接服务器可以读取远程服务器上的数据库内容
  • 创建链接服务器后的操作(Oracle)
--查询
SELECT * FROM OPENQUERY (PLM, 'SELECT * FROM TableName')

--更新
UPDATE OPENQUERY(PLM, 'SELECT * FROM TableName') SET NAME='Rose' WHERE ID=@Id;

--插入
INSERT INTO OPENQUERY(PLM, 'SELECT * FROM TableName') (ID,NAME) VALUES(@id,@Name);
posted @ 2020-04-10 16:23  HKBlog  阅读(151)  评论(0编辑  收藏  举报