DECLARE @cmd NVARCHAR(MAX)
DECLARE @TargetDir NVARCHAR(MAX)BEGIN TRY 
SET @TargetDir='L:\DRI'
SET @cmd='master.dbo.xp_create_subdir N''' + REPLACE(@TargetDir,'''','''''') + ''''
EXEC(@cmd) 
END TRY
BEGIN CATCH 
SELECT ERROR_MESSAGE()
END CATCH请教:为什么SELECT ERROR_MESSAGE()无法获取异常信息。

解决方案 »

  1.   


    DECLARE @cmd NVARCHAR(MAX)
    DECLARE @TargetDir NVARCHAR(MAX)BEGIN TRY 
    BEGIN TRAN
        SET @TargetDir='L:\DRI'
        SET @cmd='master.dbo.xp_create_subdir N''' + REPLACE(@TargetDir,'''','''''') + ''''
        EXEC(@cmd)
    COMMIT TRAN
    END TRY    
    BEGIN CATCH 
        SELECT ERROR_MESSAGE()
    ROLLBACK
    END CATCH
    ???
      

  2.   

    还是SELECT 不出来错误信息!
      

  3.   

    DECLARE @cmd NVARCHAR(MAX)
    DECLARE @TargetDir NVARCHAR(MAX)
    DECLARE @ErrMessage NVARCHAR(MAX)
    SET @ErrMessage=''
    BEGIN TRY 
    BEGIN TRAN
    SET @TargetDir='L:\DRI'
    SET @cmd='master.dbo.xp_create_subdir N''' + REPLACE(@TargetDir,'''','''''') + ''''
    EXEC(@cmd)
     COMMIT TRAN
    END TRY
    BEGIN CATCH 
    SELECT @ErrMessage=@ErrMessage+ISNULL(ERROR_MESSAGE(),'')
        ROLLBACK
    END CATCHSELECT @ErrMessage我是想得到@ErrMessage的信息!
      

  4.   

    把 @cmd 随便赋点什么字符看看.
      

  5.   

    @cmd 赋值为 ‘SELECT 1/0’可以得到异常信息。
      

  6.   


    DECLARE @cmd NVARCHAR(MAX)
    DECLARE @TargetDir NVARCHAR(MAX)BEGIN TRY 
        SET @TargetDir='L:\DRI'
        SET @cmd='master.dbo.xp_create_subdir N''' + REPLACE(@TargetDir,'''','''''') + ''''
        EXEC(@cmd)
        go
        raiserror('生成一个错误消息',11,1)
     
    END TRY    
    BEGIN CATCH 
       SELECT ERROR_MESSAGE()
      select error_message() as 错误消息,
             error_severity() as严重级别,
             error_state() as state;END CATCH--这样看看有没有结果?
      

  7.   

    error_message() 怎么变成 raiserror 的出数值了。
      

  8.   

    问题应该出在     SET @TargetDir='L:\DRI'
        SET @cmd='master.dbo.xp_create_subdir N''' + REPLACE(@TargetDir,'''','''''') + ''''
        EXEC(@cmd)
    这3句上面  
    你 print @cmd出来看看结果是什么?
      

  9.   

    master.dbo.xp_create_subdir N'D:\DRI'
      

  10.   

    我运行的结果DECLARE @cmd NVARCHAR(MAX)
    DECLARE @TargetDir NVARCHAR(MAX)BEGIN TRY 
        SET @TargetDir='L:\DRI'
        SET @cmd='master.dbo.xp_create_subdir N''' + REPLACE(@TargetDir,'''','''''') + ''''
        EXEC(@cmd) 
    END TRY    
    BEGIN CATCH 
        SELECT ERROR_MESSAGE()
    END CATCH/*p_create_subdir() 返回了错误 3,“系统找不到指定的路径。”*/
      

  11.   

    --在最前面加上 selectDECLARE @cmd NVARCHAR(MAX)
    DECLARE @TargetDir NVARCHAR(MAX)BEGIN TRY 
        SET @TargetDir='L:\DRI'
        SET @cmd='select master.dbo.xp_create_subdir N''' + REPLACE(@TargetDir,'''','''''') + ''''
        EXEC(@cmd) 
    END TRY    
    BEGIN CATCH 
        SELECT ERROR_MESSAGE()
    END CATCH/*----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
    无法绑定由多个部分组成的标识符 "master.dbo.xp_create_subdir"。(1 行受影响)
    */
      

  12.   


    我想把异常保存在变量里!然后用SELECT 显示出来
      

  13.   

    加上SELECT 我的语句就无法执行了。