指定了非布尔类型的表达式---问题!

doubagui 2013-04-08 04:52:34

CREATE PROC SF_OP3_set_color s_text NVARCHAR(100),@C_result NVARCHAR(1) OUTPUT
AS
BEGIN
if (select top 1 id from tab where @s_text)>0
set @C_result='1' else @C_result='0'
END

@s_text是一些逻辑表达式,比方:id>50 AND ID<100
现在问题出现:指定了非布尔类型的表达式。
如何修改!
...全文
1043 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
MrYangkang 2013-04-08
  • 打赏
  • 举报
回复
CREATE PROC SF_OP3_set_color @s_text NVARCHAR(100), @C_result NVARCHAR(1) OUTPUT AS begin if (select top 1 convert(int,id) from tab>0 set @C_result='1' else set @C_result='0' end 如果if的sql 能执行(不含传进来的逻辑表达式),则可以你那样写,否则就参考楼上的写法
szm341 2013-04-08
  • 打赏
  • 举报
回复
select top 1 id from tab where @s_text这种方法是错误的,需要动态拼接执行,而且好多语法错误。。

CREATE PROC SF_OP3_set_color 
@s_text NVARCHAR(100),@C_result NVARCHAR(1) OUTPUT
AS 
BEGIN
declare @sql nvarchar(1000),@id int
set @sql='select @id=count(id) from tab where '+@s_text
exec sp_executesql @sql,N'@id int out',@id out
if @id>0 set @C_result='1' 
else set @C_result='0'
END
chuifengde 2013-04-08
  • 打赏
  • 举报
回复
CREATE PROC SF_OP3_set_color 
	@s_text NVARCHAR(100),
	@C_result NVARCHAR(1) OUTPUT
AS 
BEGIN
    exec('select top 1 id from tab where '+@s_text)
    SET @C_result=SIGN(@@ROWCOUNT) 
END

27,579

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧