主题:[讨论]高分!救存储过程动态字段查询的问题!急!!!
各位达人,小弟有个棘手问题:
我在做一个数据库,其中有一张表,字段大致如下:
食物ID、食物名、蛋白质、糖、水分、胆固醇、热量、……
现在想做一个存储过程,来查询某个营养成分的排名:
调用存储过程时,我给的参数是3个:成分名、约束、数值,如:
EXEC '蛋白质','>',25
EXEC '胆固醇','<',15.2
(每次查询的字段不同、比较的关系也不同,这样的动态变化怎么做?)
并在存储过程用3个变量来接收:
CREATE PROC 成分查询(@成分 VARCHAR(50), @约束 VARCHAR(50),@数值 decimal(7,2))
AS
SELECT 食物名,@成分 FROM 营养表 WHERE @成分 @约束 @数值
GO
存储过程中始终把@开头的作为变量,我想用字符串拼接的方法来做,问题是如何读取出变量中的值?!
如:DECLARE @SQL VARCHAR(500)
SET @SQL='SELECT 食物名,'+@成分 + 'FROM 营养表 WHERE ' + @成分 @约束 @数值'
这样是有问题的,不止到应该怎么办?[em10]哪位大虾帮帮小弟吧,万分感激!
我在做一个数据库,其中有一张表,字段大致如下:
食物ID、食物名、蛋白质、糖、水分、胆固醇、热量、……
现在想做一个存储过程,来查询某个营养成分的排名:
调用存储过程时,我给的参数是3个:成分名、约束、数值,如:
EXEC '蛋白质','>',25
EXEC '胆固醇','<',15.2
(每次查询的字段不同、比较的关系也不同,这样的动态变化怎么做?)
并在存储过程用3个变量来接收:
CREATE PROC 成分查询(@成分 VARCHAR(50), @约束 VARCHAR(50),@数值 decimal(7,2))
AS
SELECT 食物名,@成分 FROM 营养表 WHERE @成分 @约束 @数值
GO
存储过程中始终把@开头的作为变量,我想用字符串拼接的方法来做,问题是如何读取出变量中的值?!
如:DECLARE @SQL VARCHAR(500)
SET @SQL='SELECT 食物名,'+@成分 + 'FROM 营养表 WHERE ' + @成分 @约束 @数值'
这样是有问题的,不止到应该怎么办?[em10]哪位大虾帮帮小弟吧,万分感激!