创建了一个存储过程实现在sql server 2000里把sql查询结果生成文本文件,遇到问题如下,哪些地方需要修改,各位大牛帮忙看下。存储过程创建代码如下:
create PROCEDURE sp_sql_query_to_file(
@servername varchar(50), --服务器名
@username varchar(50), --用户名,如果用NT验证方式,则为空’’
@password varchar(50) , --密码
@sql_query varchar(2000) , --SQL查询语句,有字符条件时用单引号
@filePath_name varchar(1000), --导出路径和文件名
@date datetime --保存文件时的生成日期戳
)AS
DECLARE @sql varchar(8000)
SET @sql=’bcp "’+@sql_query + ’" queryout ’+’ "’+@filePath_name+’_’+
convert(varchar(12),@date,112)+’.txt " /t "," /w’
+’ /S ’+@servername
+CASE WHEN ISNULL(@username,’’)=’’ THEN ’’ ELSE ’ /U ’+@username END
+’ /P ’+ISNULL(@password,’’)
select @sql
EXEC master..xp_cmdshell @sql
IF @@Error<>0 BEGIN
print ’生成文件时出错了,请查看!’+@@Error
END
GO报错如下:
消息 170,级别 15,状态 1,第 1 行
第 1 行: ' ' 附近有语法错误。
消息 170,级别 15,状态 1,第 10 行
第 10 行: ' ' 附近有语法错误。
消息 170,级别 15,状态 1,第 10 行
第 10 行: '’' 附近有语法错误。
消息 170,级别 15,状态 1,第 16 行
第 16 行: ' ' 附近有语法错误。
消息 170,级别 15,状态 1,第 17 行
第 17 行: ' ' 附近有语法错误。
create PROCEDURE sp_sql_query_to_file(
@servername varchar(50), --服务器名
@username varchar(50), --用户名,如果用NT验证方式,则为空’’
@password varchar(50) , --密码
@sql_query varchar(2000) , --SQL查询语句,有字符条件时用单引号
@filePath_name varchar(1000), --导出路径和文件名
@date datetime --保存文件时的生成日期戳
)AS
DECLARE @sql varchar(8000)
SET @sql=’bcp "’+@sql_query + ’" queryout ’+’ "’+@filePath_name+’_’+
convert(varchar(12),@date,112)+’.txt " /t "," /w’
+’ /S ’+@servername
+CASE WHEN ISNULL(@username,’’)=’’ THEN ’’ ELSE ’ /U ’+@username END
+’ /P ’+ISNULL(@password,’’)
select @sql
EXEC master..xp_cmdshell @sql
IF @@Error<>0 BEGIN
print ’生成文件时出错了,请查看!’+@@Error
END
GO报错如下:
消息 170,级别 15,状态 1,第 1 行
第 1 行: ' ' 附近有语法错误。
消息 170,级别 15,状态 1,第 10 行
第 10 行: ' ' 附近有语法错误。
消息 170,级别 15,状态 1,第 10 行
第 10 行: '’' 附近有语法错误。
消息 170,级别 15,状态 1,第 16 行
第 16 行: ' ' 附近有语法错误。
消息 170,级别 15,状态 1,第 17 行
第 17 行: ' ' 附近有语法错误。
create PROCEDURE sp_sql_query_to_file(
@servername varchar(50), --服务器名
@username varchar(50), --用户名,如果用NT验证方式,则为空''
@password varchar(50) , --密码
@sql_query varchar(2000) , --SQL查询语句,有字符条件时用单引号
@filePath_name varchar(1000), --导出路径和文件名
@date datetime --保存文件时的生成日期戳
)AS
DECLARE @sql varchar(8000)
SET @sql='bcp "'+@sql_query + '" queryout '+' "'+@filePath_name+'_'+
convert(varchar(12),@date,112)+'.txt " /t "," /w'
+' /S '+@servername
+CASE WHEN ISNULL(@username,'')='' THEN '' ELSE ' /U '+@username END
+' /P '+ISNULL(@password,'')
select @sql
EXEC master..xp_cmdshell @sql
IF @@Error<>0 BEGIN
print '生成文件时出错了,请查看!'+@@Error
END
GO
@servername varchar(50), --服务器名
@username varchar(50), --用户名,如果用NT验证方式,则为空''
@password varchar(50) , --密码
@sql_query varchar(2000) , --SQL查询语句,有字符条件时用单引号
@filePath_name varchar(1000), --导出路径和文件名
@date datetime --保存文件时的生成日期戳
)AS
DECLARE @sql varchar(8000)
SET @sql='bcp "'+@sql_query+ '" queryout'+' "'+@filePath_name+'_'+
convert(varchar(12),@date,112)+'.txt " /t "," /w'
+' /S '+@servername
+CASE WHEN ISNULL(@username,'')='' THEN '' ELSE ' /U '+@username END
+' /P '+ISNULL(@password,'')
select @sql
EXEC master..xp_cmdshell @sql
GO报错如下:
消息 170,级别 15,状态 1,第 1 行
第 1 行: ' ' 附近有语法错误。
消息 170,级别 15,状态 1,第 10 行
第 10 行: ' ' 附近有语法错误。
消息 137,级别 15,状态 2,第 10 行
必须声明变量 '@sql_query'。
消息 170,级别 15,状态 1,第 17 行
第 17 行: ' ' 附近有语法错误。