DECLARE @VCBYF VARCHAR(6)if len(ltrim(str(MONTH( GETDATE()))))=1
SET @VCBYF=(ltrim(str(YEAR( GETDATE())))+'0'+ltrim(str(MONTH( GETDATE()))))
else
SET @VCBYF=(ltrim(str(YEAR( GETDATE())))+ltrim(str(MONTH( GETDATE()))))EXEC master..xp_cmdshell 'bcp "SELECT A.YHZH, B.YHMC, C.ZJE, B.DAH ,B.YHMC FROM jd_Gas.dbo.T_BCXXB D INNER JOIN jd_Gas.dbo.T_YHDAB B ON D.DBBH=B.DBBH INNER JOIN jd_Gas.dbo.T_YHDKYHZL A ON A.DAH=B.DAH INNER JOIN jd_Gas.dbo.T_CBJLB C ON B.DAH = C.DAH AND A.DAH = C.DAH where 1=1 AND c.cbyf=@VCBYF and B.DBBH=''"AG1111"'' AND B.SFFS = ''"银行代扣"''" queryout c:\DT.txt -c -t"|" -U"sa" -P"sa"'
它怎么老提示我
SQLState = 37000, NativeError = 137Error = [Microsoft][ODBC SQL Server Driver][SQL Server]必须声明变量 '@VCBYF'。SQLState = 37000, NativeError = 8180
Error = [Microsoft][ODBC SQL Server Driver][SQL Server]未能准备语句。
SET @VCBYF=(ltrim(str(YEAR( GETDATE())))+'0'+ltrim(str(MONTH( GETDATE()))))
else
SET @VCBYF=(ltrim(str(YEAR( GETDATE())))+ltrim(str(MONTH( GETDATE()))))EXEC master..xp_cmdshell 'bcp "SELECT A.YHZH, B.YHMC, C.ZJE, B.DAH ,B.YHMC FROM jd_Gas.dbo.T_BCXXB D INNER JOIN jd_Gas.dbo.T_YHDAB B ON D.DBBH=B.DBBH INNER JOIN jd_Gas.dbo.T_YHDKYHZL A ON A.DAH=B.DAH INNER JOIN jd_Gas.dbo.T_CBJLB C ON B.DAH = C.DAH AND A.DAH = C.DAH where 1=1 AND c.cbyf=@VCBYF and B.DBBH=''"AG1111"'' AND B.SFFS = ''"银行代扣"''" queryout c:\DT.txt -c -t"|" -U"sa" -P"sa"'
它怎么老提示我
SQLState = 37000, NativeError = 137Error = [Microsoft][ODBC SQL Server Driver][SQL Server]必须声明变量 '@VCBYF'。SQLState = 37000, NativeError = 8180
Error = [Microsoft][ODBC SQL Server Driver][SQL Server]未能准备语句。
解决方案 »
- sql关于集合查询,intersect,except语句报错怎么改啊,说明正确原理和方法
- SQL 筛选语句怎么写?
- 事务处理的commit在数据库中是同步还是异步
- SQLSERVERAGENT中一个日志错误:Unable to read local eventlog (reason: 事件日志文件已在读取间更改。)
- 求sql ?????
- 请问在sql2000怎样设计一个字段的值只能为正数,不能为负数?
- 昨天求的SQL语句好象都不行,请大家再帮忙看看,谢谢
- mssql聚集索引问题请教
- 数据库程序换一台机器运行怎么办?
- 一个会员有2个账户,一个是预付款账户,一个是礼品账户, 表如何设计?
- 列前缀 'books' 与查询中所用的表名或别名不匹配。
- 连接SQL SERVER的连接字符串?
DECLARE @Sql NVARCHAR(1000)
if len(ltrim(str(MONTH( GETDATE()))))=1
SET @VCBYF=(ltrim(str(YEAR( GETDATE())))+'0'+ltrim(str(MONTH( GETDATE()))))
else
SET @VCBYF=(ltrim(str(YEAR( GETDATE())))+ltrim(str(MONTH( GETDATE())))) SET @Sql='bcp "SELECT A.YHZH, B.YHMC, C.ZJE, B.DAH ,B.YHMC FROM jd_Gas.dbo.T_BCXXB D INNER JOIN jd_Gas.dbo.T_YHDAB B ON D.DBBH=B.DBBH INNER JOIN jd_Gas.dbo.T_YHDKYHZL A ON A.DAH=B.DAH INNER JOIN jd_Gas.dbo.T_CBJLB C ON B.DAH = C.DAH AND A.DAH = C.DAH where 1=1 AND c.cbyf='''+@VCBYF+''' and B.DBBH=''AG1111'' AND B.SFFS = ''银行代扣''" queryout c:\DT.txt -c -t"|" -U"sa" -P"sa"'
EXEC master..xp_cmdshell @Sql
EXEC master..xp_cmdshell @Sql
SET @Sql1= 'bcp "SELECT A.YHZH, B.YHMC, C.ZJE, B.DAH ,B.YHMC FROM jd_Gas.dbo.T_BCXXB D INNER JOIN jd_Gas.dbo.T_YHDAB B ON D.DBBH=B.DBBH INNER JOIN jd_Gas.dbo.T_YHDKYHZL A ON A.DAH=B.DAH INNER JOIN jd_Gas.dbo.T_CBJLB C ON B.DAH = C.DAH AND A.DAH = C.DAH where 1=1 AND c.cbyf='''+@VCBYF+''' and B.DBBH='''+@VDBBH+''' AND B.SFFS = ''"银行代扣"''" queryout c:\'''+@VFILENAME+'''.txt -c -t"|" -U"sa" -P"sa"'
EXEC master..xp_cmdshell @Sql1两条一起执行的话,能不能把它们的数据叠加起来啊???我这样写是把上一条的数据给覆盖了
DECLARE @A intEXEC master..xp_cmdshell 'SELECT * FROM 表1 WHERE ID=@A'
这样是不行的。必须:EXEC master..xp_cmdshell 'DECLARE @A int;SELECT * FROM 表1 WHERE ID=@A'
就可以了。叠加两个表用UNION ALL。不过不太清楚你bcp是啥玩易,所以不能给出你5楼的答案。