ALTER PROCEDURE [dbo].[sp_rwy_SealContractApprovel]
(
@TableName nvarchar(100), --表名称
@keyval nvarchar(50), --表主键
@ApprovalResultFieldVal nvarchar(50), --字典类型,值为0、1、2
@CHECKSTATETIMES datetime,--操作时间
@CHECKUSERID nvarchar(50),--操作人ID
@CHECKUSERNAME nvarchar(50),--操作人
@APPROVALREASON nvarchar(100) --操作备注
)
AS
declare @CONTRACTNOTYPE nvarchar(100)
declare @SQLStr nvarchar(2000)
declare @SQLStr1 nvarchar(2000)
declare @SQLStr2 nvarchar(2000)
declare @mainnumber int
declare @intErrorCode int=0
declare @intError_S1 int
declare @Status int=0
SET XACT_ABORT ON
BEGIN TRAN
BEGIN
set @CONTRACTNOTYPE='CONTRACTNOTYPE'
set @SQLStr=N'select '+@CONTRACTNOTYPE+' from '+@TableName+' where SYSID='+@keyval
Exec sp_executesql @SQLStr
--select @CONTRACTNOTYPE=CONTRACTNOTYPE,@mainnumber=TOURISTNO from @TableName where SYSID=@keyval
if @CONTRACTNOTYPE='0'
BEGIN
set @SQLStr1='update ['+@TableName+'] SET CHECKSTATETIMES=CONVERT(varchar(50), GETDATE(), 20),CHECKUSERID='
+@CHECKUSERID+',CHECKUSERNAME='+@CHECKUSERNAME+',APPROVALRESULT='+@ApprovalResultFieldVal+',APPROVALREASON='+@APPROVALREASON+'where SYSID='+@keyval
Exec(@SQLStr1)
set @intError_S1 = @@ERROR
END
else if @CONTRACTNOTYPE='1'
BEGIN
SET @SQLStr2='UPDATE ['+@TableName+'] SET CHECKSTATETIMES=CONVERT(varchar(50), GETDATE(), 20),CHECKUSERID='+@CHECKUSERID+',CHECKUSERNAME='
+@CHECKUSERNAME+',APPROVALRESULT='+@ApprovalResultFieldVal+',APPROVALREASON='+@APPROVALREASON+',STAMPTIME=CONVERT(varchar(50), GETDATE(), 20),STAMPRENID='
+@CHECKUSERID+',STAMPREN='+@CHECKUSERNAME+'where SYSID='+@keyval
Exec(@SQLStr2)
set @intError_S1 = @@ERROR
END
END
SET @intErrorCode = @intError_S1
IF @intErrorCode = 0
BEGIN
SET @Status = 1
COMMIT TRAN
END
ELSE
ROLLBACK TRAN
select @Status as ExcuteStatus
RETURN
------解决思路----------------------
set @SQLStr=N'select '+@CONTRACTNOTYPE+' from '+@TableName+' where SYSID='''+@keyval+''' '
是这样~~