使用 SP_OAXXX 创建文件夹,注意区别于 xp_cmdshell --mkdir xxx

sp_configure 'show advanced options',1
go 
reconfigure with override
go
sp_configure 'Ole Automation Procedures',1
go
reconfigure  with override
go
ALTER PROC dbo.usp_OACreate  @folderName VARCHAR(256)='C:\Test\testfa'
AS
BEGIN 
	DECLARE @hr INT,@fso_token INT,@dirHandle INT,@IsDir_flag BIT,@IsParDirExists_Flag BIT
	DECLARE @tempTab TABLE(fileexists_flag BIT,IsDir_flag BIT,IsParDirExists_Flag BIT)
	INSERT INTO @tempTab
	EXEC xp_fileexist @folderName  --,@hr output
	SELECT @IsDir_flag=IsDir_flag,@IsParDirExists_Flag=IsParDirExists_Flag FROM @tempTab
	IF @IsDir_flag<>1 AND @IsParDirExists_Flag=1
		BEGIN
		     EXEC @hr=SP_OACREATE 'Scripting.FileSystemObject',@fso_token OUTPUT
			  IF @hr<>0
				BEGIN
					GOTO errorProcess
				END
				ELSE
					BEGIN
						EXEC @hr=SP_OAMethod @fso_token,'CreateFolder',@dirHandle OUTPUT,@folderName
					    
					    IF @hr<>0 GOTO errorProcess
						ELSE 
						 EXEC SP_OADestroy @fso_token
					END
		END
	ELSE
	GOTO fileexists
	errorProcess:
	EXEC SP_OAGetErrorInfo @fso_token
	RETURN 1; --- FAILED
	fileexists:
	RAISERROR('Folder %s exists OR its parent directory path is not exist!!! please check!!!',-1,-1,@folderName) WITH NOWAIT
END
GO

  

转载于:https://www.cnblogs.com/Frank99/p/6373573.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值