95 lines
4.1 KiB
Transact-SQL
95 lines
4.1 KiB
Transact-SQL
|
|
/****** Object: StoredProcedure [dbo].[p_BaseSave] Script Date: 01/26/2015 20:18:30 ******/
|
|
SET ANSI_NULLS ON
|
|
GO
|
|
SET QUOTED_IDENTIFIER ON
|
|
GO
|
|
-- =============================================
|
|
-- Author: <Author,,Name>
|
|
-- Create date: <Create Date,,>
|
|
-- Description: <Description,,>
|
|
-- =============================================
|
|
ALTER PROCEDURE [dbo].[p_BaseSave]
|
|
-- Add the parameters for the stored procedure here
|
|
@baseSql varchar(5000),--sql语句
|
|
@saveType int,--保存类型,1=添加保存,2=修改保存,3=删除
|
|
@modid varchar(20), --模块id号
|
|
@tablename varchar(50),--表名
|
|
@keyfield varchar(50),--关键字段
|
|
@keyvalue varchar(50),--关键值
|
|
@operatorid int,--操作员
|
|
@operatorname varchar(50),--操作员
|
|
@msg varchar(2000) output
|
|
AS
|
|
BEGIN
|
|
declare @tmpsql varchar(3000),@retValue int,@tbname varchar(50),@lkeyfield varchar(50)
|
|
begin transaction
|
|
if @saveType not in (1,2,3)
|
|
begin
|
|
set @msg='操作类型错误'
|
|
goto on_error
|
|
end
|
|
set @tbname = @tablename
|
|
set @lkeyfield=@keyfield
|
|
set @msg=''
|
|
if ISNULL(@tbname,'')=''
|
|
begin
|
|
select @tbname=sqldt1 from p_systemdlltab where DllCoid=@modid
|
|
if isnull(@tbname,'')=''
|
|
begin
|
|
set @msg='基础模板主配置错误'
|
|
goto on_error
|
|
end
|
|
end
|
|
if ISNULL(@lkeyfield,'')=''
|
|
begin
|
|
select top 1 @lkeyfield=fieldname from p_systemwordbooktab where tab=@modid order by orderid
|
|
if isnull(@lkeyfield,'')=''
|
|
begin
|
|
set @msg='基础模板关键字段配置错误'
|
|
goto on_error
|
|
end
|
|
end
|
|
if isnull(@keyvalue,'')=''
|
|
begin
|
|
set @msg='未传入关键值'
|
|
goto on_error
|
|
end
|
|
|
|
begin try
|
|
|
|
--保存前检查
|
|
exec @retValue=p_baseSaveBefore @saveType,@modid,@tbname,@lkeyfield,@keyvalue,@operatorid,@operatorname,@msg output
|
|
if @retValue<0
|
|
begin
|
|
goto on_error
|
|
end
|
|
|
|
--保存
|
|
exec(@basesql)
|
|
--保存后检查
|
|
exec @retValue=p_baseSaveAfter @saveType,@modid,@keyvalue,@operatorid,@operatorname,@msg output
|
|
if @retValue<0
|
|
begin
|
|
goto on_error
|
|
end
|
|
|
|
commit
|
|
return 1
|
|
|
|
end try
|
|
|
|
|
|
begin catch
|
|
set @msg= LEFT( ERROR_MESSAGE(),1000)
|
|
goto on_error
|
|
end catch
|
|
|
|
on_error:
|
|
rollback
|
|
set @msg=char(13)+@msg
|
|
select @msg
|
|
return -1
|
|
|
|
END
|