日期:2014-05-17 浏览次数:20564 次
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