变量
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);