日期:2014-05-17 浏览次数:20558 次
CREATE PROCEDURE Sp_CU_Test(
@AA1 nvarchar(10),
@AA2 nvarchar(10),
@BB1 nvarchar(10),
@BB2 nvarchar(10)
)
AS
DECLARE @cSqlString1 nvarchar(4000)
DECLARE @cSqlString2 nvarchar(4000)
SET @cSqlString1 ='INSERT INTO Table1(COLA1,COLA2) VALUES('''+@AA1+''' ,'''+@AA2+''')'
SET @cSqlString2 ='INSERT INTO Table2(COLB1,COLB2) VALUES('''+@BB1+''' ,'''+@BB2+''')'
DECLARE @SQL NVARCHAR(400)
SET @SQL = N'
SET XACT_ABORT ON
BEGIN TRAN
' + @cSqlString1 + '
' + @cSqlString2 + '
commit tran
'
exec(@SQL)
Go
------解决方案--------------------
SET @cSqlString1 ='INSERT INTO Table1(COLA1,COLA2) VALUES('''+@AA1+''' ,'''+@AA2+''')'
SET @cSqlString2 ='INSERT INTO Table2(COLB1,COLB2) VALUES('''+@BB1+''' ,'''+@BB2+''')'
DECLARE @SQL NVARCHAR(8000)
--2005/2008
BEGIN TRY
BEGIN TRAN
exec(@cSqlString1+' '+ @cSqlstring2)
IF (XACT_STATE()) = 1
COMMIT TRAN
END TRY
BEGIN CATCH
IF (XACT_STATE()) != 1
ROLLBACK TRAN
SELECT
ERROR_NUMBER() AS ErrorNumber
,ERROR_SEVERITY() AS ErrorSeverity
,ERROR_STATE() AS ErrorState
,ERROR_PROCEDURE() AS ErrorProcedure
,ERROR_LINE() AS ErrorLine
,ERROR_MESSAGE() AS ErrorMessage;
END CATCH
------解决方案--------------------
CREATE PROCEDURE Sp_CU_Test
( @AA1 nvarchar(10),
@AA2 nvarchar(10),
@BB1 nvarchar(10),
@BB2 nvarchar(10))
AS
DECLARE @cSqlString1 nvarchar(4000)
DECLARE @cSqlString2 nvarchar(4000)
SET @cSqlString1 ='INSERT INTO Table1(COLA1,COLA2) VALUES('''+@AA1+''' ,'''+@AA2+''')'
SET @cSqlString2 ='INSERT INTO Table2(COLB1,COLB2) VALUES('''+@BB1+''' ,'''+@BB2+''')'
set xact_abort on