存储过程的异常和事物的用法:
https://www.cnblogs.com/liuguanghai/p/5460855.html
基本语法:
https://www.cnblogs.com/lsgsanxiao/p/10878122.html
判断表名,存储过程名是否存在:
https://www.cnblogs.com/li-peng/archive/2013/01/24/2874517.html
1.新建一个自己想要实现的存储过程
模板:
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE DemoPROCEDURE
AS
BEGIN
SET NOCOUNT ON;
Set XACT_ABORT ON; --有两个值,若是off出错语句不会执行,其他语句继续执行,若是on 所有语句都会回滚。
Begin try
--这个位置写你要执行的sql
--1.首先要判断你要创建的表是否存在,若存在删除表中的所有数据,再填入最新的数据。
-- 判断要创建的表名是否存在
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[test03]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
-- 删除表
begin
drop table [dbo].[test03]
end
--2.你自己的业务逻辑
--2.1创建要生成的表
create table test03
(
[pro] [nvarchar](50) NOT NULL,
[long] [decimal](18,9) NOT NULL,
[latitude] [decimal](18,9) NOT NULL,
);
--2.2将查询结果集(多条数据)插入临时表
insert into test03 select * from dbo.map ;
--3.执行成功,向日志里面插入一条成功的数据
exec TransformLogg @SUCCEED='成功';
End try
Begin Catch
--异常的处理方法,向日志里面插入一天数据
exec TransformLogg @SUCCEED='执行失败';
End Catch
END
GO
2.把刚刚新建的存储过程添加到统一调度的存储过程内
USE [U9TransfromBQC] --这个位置不固定,与你使用的数据库有关。
GO
/****** Object: StoredProcedure [dbo].[DemoPROCEDURE] Script Date: 2021-08-17 18:08:22 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE dbo.cc_proce
AS
BEGIN
SET NOCOUNT ON;
Set XACT_ABORT Off; --有两个值,若是off出错语句不会执行,其他语句继续执行,若是on 所有语句都会回滚。
Begin try
exec dbo.DemoPROCEDURE; --这给位置写自己创建的存储名和参数
exec dbo.test003; --这给位置写自己创建的存储名和参数
End try
Begin Catch
SELECT ERROR_NUMBER() AS ErrorNumber,
ERROR_MESSAGE() AS ErrorMessage,
ERROR_PROCEDURE() AS ERRORPROCEDURE;
End Catch
END
GO
3.日志插入存储过程Demo
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE TransformLogg
(
@SUCCEED nvarchar(10)
)
AS
BEGIN
SET NOCOUNT ON;
insert into dbo.TransformLog (ErrorNumber,ErrorMessage,ERRORPROCEDURE,SUCCESSMSG,DATEMSG)values(ERROR_NUMBER(),ERROR_MESSAGE(),ERROR_PROCEDURE(),@SUCCEED,(GETDATE()));
END
GO