34,594
社区成员
发帖
与我相关
我的任务
分享
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
DECLARE @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 行受影响)
*/
我运行的结果
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,“系统找不到指定的路径。”*/
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
--这样看看有没有结果?
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 CATCH
SELECT @ErrMessage
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