竞争无处不在,青春永不言败!专业撸代码,副业修bug

Talk is cheap , show me the code!



使用 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

  

posted @ 2017-02-07 12:27  云雾散人  阅读(382)  评论(0编辑  收藏  举报

Your attitude not your aptitude will determine your altitude!

如果有来生,一个人去远行,看不同的风景,感受生命的活力!