我想创建一个表值函数。此函数将有 3 个参数。每个返回的表列都将由 SELECT 语句填充。每个 SELECT 语句将在其 WHERE 子句中使用其中一个函数参数。
这是功能:
CREATE FUNCTION getChangeTypes(@add_name varchar(20),@change_name varchar(20), @remove_name varchar(20))
RETURNS @changeTypes TABLE (
addd varchar(20),
change varchar(20),
remove varchar(20)
)
AS
BEGIN
UPDATE @changeTypes
SET addd = CAST ((SELECT change_type_id FROM db_comp_change_types WHERE change_type_name = ''+@add_name+'') AS varchar(20))
UPDATE @changeTypes
SET change = CAST ((SELECT change_type_id FROM db_comp_change_types WHERE change_type_name = ''+@change_name+'') AS varchar(20))
UPDATE @changeTypes
SET remove = CAST ((SELECT change_type_id FROM db_comp_change_types WHERE change_type_name = ''+@remove_name+'') AS varchar(20))
RETURN;
END;
GO
这是对函数的调用:
select * from getChangeTypes('Added Column Size','Changed Column Size','Removed Column Size')
我意识到由于我使用函数参数的方式,WHERE 无法正常工作。有人可以建议我可以正确地将函数参数合并到 WHERE 子句中的方法吗?
非常感谢。