存储过程中like的问题

eduyp 2006-03-29 05:02:13
CREATE PROCEDURE GetBoardIDByParentPathlike
@TableName nvarchar(50),
@ParentPath nvarchar(50)
AS
SET NOCOUNT ON
DECLARE @STR nvarchar(50)
SELECT @STR = LTRIM(RTRIM(@ParentPath))
EXEC ('SELECT BoardID FROM '+@TableName+' WHERE ParentPath like '+@STR+'')
RETURN 0
GO

--运行后
EXEC GetBoardIDByParentPathlike
shop_TreeBoard,
'0,1,7'
----------------
服务器: 消息 170,级别 15,状态 1,行 1
第 1 行: ',' 附近有语法错误。
...全文
303 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
eduyp 2006-03-30
  • 打赏
  • 举报
回复
问题已经解决!
EXEC ('SELECT BoardID FROM '+@TableName+' WHERE ParentPath like '''+@STR+'''')
eduyp 2006-03-30
  • 打赏
  • 举报
回复
写成这样也不行:
CREATE PROCEDURE GetBoardIDByParentPathlike
@TableName nvarchar(50),
@ParentPath nvarchar(50)
AS
SET NOCOUNT ON
DECLARE @STR nvarchar(50)
SELECT @STR = LTRIM(RTRIM(@ParentPath))
EXEC ('SELECT BoardID FROM '+@TableName+' WHERE CHARINDEX('+@STR+',ParentPath)>0')
--print @STR
RETURN 0
GO

----
use shops
exec GetBoardIDByParentPathlike
shop_TreeBoard,
'0,1,7'

------
服务器: 消息 189,级别 15,状态 1,行 1
charindex 函数要求有 2 到 3 个参数。
eduyp 2006-03-29
  • 打赏
  • 举报
回复
回chenqianlong(443),这样也不行

服务器: 消息 170,级别 15,状态 1,行 1
第 1 行: ',' 附近有语法错误。
服务器: 消息 105,级别 15,状态 1,行 1
字符串 '' 之前有未闭合的引号。
chenqianlong 2006-03-29
  • 打赏
  • 举报
回复
EXEC ('SELECT BoardID FROM '+@TableName+' WHERE ParentPath like '+@STR+'''')
eduyp 2006-03-29
  • 打赏
  • 举报
回复
在asp中提示错误为:
Microsoft OLE DB Provider for SQL Server 错误 '80040e14'

第 1 行: ',' 附近有语法错误。
eduyp 2006-03-29
  • 打赏
  • 举报
回复
就是这样也都不行:
EXEC GetBoardIDByParentPathlike
shop_TreeBoard,
'0,1,7',%
-----------
EXEC GetBoardIDByParentPathlike
shop_TreeBoard,
'0,1,7,%'

22,210

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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