各位:请帮忙看一下参数的使用???谢谢

prcgolf 2003-04-16 09:28:48
CREATE procedure P_Exists
(
@i_tableName varchar(30),
@i_FieldName varchar(30),
@i_FieldValue varchar(30),
@o_flag bit output
)
AS
/*********************************************
DESCRIPTION: 查询表@i_tableName,看是否存在这样的记录:字段@i_fieldName的值为@i_fieldValue。
如果存在,返回1;
否则返回0

Example use: declare @a bit
execute p_Exists 'customer','loginname','logpwd',@a
print @a

*********************************************/
BEGIN
declare @sql varchar(400),
@count int
set @sql='select @count=count(1) from ' + @i_tableName + ' where ' + @i_FieldName + ' = ''' + @i_FieldValue + ''''
--print @sql
exec(@sql)
if (@count=0)
set @o_flag=0
else
set @o_flag=1
end
GO
为什么SQLSERVER能生成此存储过程,但执行时却说:
服务器: 消息 137,级别 15,状态 1,行 1
必须声明变量 '@count'。
可我声明了啊???
...全文
30 点赞 收藏 9
写回复
9 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
hansong_ll 2003-04-17
pengdali(大力)
为什么会出现这样的错误?
服务器: 消息 214,级别 16,状态 2,过程 sp_executesql,行 18
过程需要参数 '@statement' 为 'ntext/nchar/nvarchar' 类型。

第18行为:
SET @sSQL=N'SELECT @sMLSH=MAX(' + @sFieldName + ') FROM ' + @sTableName + ' WHERE ' + @sFieldName + ' LIKE %' + '' + @sLSH + '' + '%'
EXEC sp_executesql @sSQL,N'@sMLSH nvarchar(20) output',@sMaxLSH output
回复
prcgolf 2003-04-16
大力领分啊!!

非常感谢啊!!!
回复
pengdali 2003-04-16
@count 是外部的参数,exec中没有办法传递出来,只能用sp_executesql
回复
pengdali 2003-04-16
页面上有个“管理”的按钮!
回复
prcgolf 2003-04-16
我怎么给大力分啊???
我第一次发帖子啊??

回复
prcgolf 2003-04-16
可是为什么要这么要用变量啊???
能详细说一下嘛??

谢谢
回复
prcgolf 2003-04-16
非常感谢!!!
回复
pengdali 2003-04-16
CREATE procedure P_Exists
(
@i_tableName varchar(30),
@i_FieldName varchar(30),
@i_FieldValue varchar(30),
@o_flag bit output
)
AS
/*********************************************
DESCRIPTION: 查询表@i_tableName,看是否存在这样的记录:字段@i_fieldName的值为@i_fieldValue。
如果存在,返回1;
否则返回0

Example use: declare @a bit
execute p_Exists 'customer','loginname','logpwd',@a
print @a

*********************************************/
BEGIN
declare @sql nvarchar(4000),
@count int
set @sql=N'select @count=count(1) from ' + @i_tableName + ' where ' + @i_FieldName + ' = ''' + @i_FieldValue + ''''

exec sp_executesql @sql,N'@count int output',@count output

if (@count=0)
set @o_flag=0
else
set @o_flag=1
end
回复
pengdali 2003-04-16
CREATE procedure P_Exists
(
@i_tableName varchar(30),
@i_FieldName varchar(30),
@i_FieldValue varchar(30),
@o_flag bit output
)
AS
/*********************************************
DESCRIPTION: 查询表@i_tableName,看是否存在这样的记录:字段@i_fieldName的值为@i_fieldValue。
如果存在,返回1;
否则返回0

Example use: declare @a bit
execute p_Exists 'customer','loginname','logpwd',@a
print @a

*********************************************/
BEGIN
declare @sql nvarchar(4000),
@count int
set @sql=N'select @count=count(1) from ' + @i_tableName + ' where ' + @i_FieldName + ' = ''' + @i_FieldValue + ''''

exec sp_executesql @sql,N'@count int output',@id output

if (@count=0)
set @o_flag=0
else
set @o_flag=1
end
GO
回复
相关推荐
发帖
MS-SQL Server
创建于2007-09-28

3.3w+

社区成员

MS-SQL Server相关内容讨论专区
申请成为版主
帖子事件
创建了帖子
2003-04-16 09:28
社区公告
暂无公告