当前位置:数据库 > SQLServer >>

sqlserver 存储过程错误问题

sqlserver select @execState = exec master.dbo.xp_cmdshell @execSql 执行时, 显示如下错误 消息 156,级别 15,状态 1,过程 up_LogTypeMovDel,第 75 行 关键字 'exec' 附近有语法错误。
答案:一个例子代码:

1> BEGIN
2>
3> DECLARE @execSql varchar(20);
4> DECLARE @execState int;
5>
6> SET @execSql = 'dir e:\*.csv';
7>
8> EXEC @execState = master..xp_cmdshell @execSql;
9>
10> PRINT 'EXEC 结果:' + CAST(@execState AS varchar);
11>
12> END
13> go
output


---------------------------------------------------------
 e:\ 的目录

这里我删除了部分结果信息

2010/12/21  17:06                18 a.csv


               1 个文件             18 字节


               0 个目录 101,594,128,384 可用字节


NULL



(0 行受影响)
EXEC 结果:0
其他:取得存储过程返回值的语法不是这样的。
改成如下:
exec @execState =master.dbo.xp_cmdshell @execSql
select @execState create proc cp_query
@mantype varchar(20),
@name varchar(50),
@type varchar(10),
@num int output
as
BEGIN
	DECLARE @s NVARCHAR(2000)
	SET @s='select @num=count(*) from tb_mail where '''+ @mantype+'''='''+@name+''' and type='+@type
	EXEC sp_executesql @s,N'@num int output',@num OUTPUT
end
go

--执行时
declare @num int
exec cp_query 'receiveman','hao@softeem.com','normal',@num OUTPUT
SELECT @num 

go变量传参用sp_executesql
2011年 @execSql  写错了吧 这就是你的存储过程的第75行的代码?最好把过程拿来看看,不然不好确定错误。 

上一个:sqlserver 按一天时间段行转列 ([上午上班时间] [上午下班时间] [下午上班时间] [下午下班时间] )
下一个:1为什么sqlserver 2000安装后有两个sqlserver 服务器? 2在于eclipse连接的时候有什么特别的设置吗?

Oracle
MySQL
Access
SQLServer
DB2
Excel
SQLite
SYBASE
Postgres
如果你遇到数据库难题:
请访问www.zzzyk.com 试试
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,