如何验证列??SQL
我有一张有一些数据的表格。其中一列名为Category,包含SKI或SB等数据 我有一个要验证的函数和一个过程。 我只需要得到滑雪类的专栏。我知道还有其他简单的方法来实现这一点…但我有一个任务,这就是为什么我使用函数和过程 我做错了什么如何验证列??SQL,sql,sql-server,validation,Sql,Sql Server,Validation,我有一张有一些数据的表格。其中一列名为Category,包含SKI或SB等数据 我有一个要验证的函数和一个过程。 我只需要得到滑雪类的专栏。我知道还有其他简单的方法来实现这一点…但我有一个任务,这就是为什么我使用函数和过程 我做错了什么 CREATE FUNCTION validateProducts(@productCategory NVARCHAR(50)) RETURNS BIT AS BEGIN DECLARE @returnValue BIT IF(@productCa
CREATE FUNCTION validateProducts(@productCategory NVARCHAR(50))
RETURNS BIT AS
BEGIN
DECLARE @returnValue BIT
IF(@productCategory LIKE 'SKI')
SET @returnValue = 1 --valid
ELSE
SET @returnValue = 0 --invalid
RETURN @returnValue
END
GO
CREATE PROCEDURE usp_ProductsRead(@productType NVARCHAR(50)) AS
BEGIN
DECLARE @productCategory NVARCHAR(50)
SET @productCategory=@productType
SELECT Category, Model
FROM PRODUCTS
WHERE dbo.validateProducts(@productCategory) = 1
END
GO
EXEC usp_ProductsRead @productType='SKI'
在
where
子句中再添加一个条件,否则当您通过@productCategory='SKI'
CREATE PROCEDURE usp_ProductsRead(@productType NVARCHAR(50)) AS
BEGIN
SELECT Category, Model
FROM PRODUCTS
WHERE dbo.validateProducts(@productType) = 1 and Category=@productType
END
GO
或者检查函数返回的值,然后选择产品
表
CREATE PROCEDURE usp_ProductsRead(@productType NVARCHAR(50)) AS
BEGIN
if (select dbo.validateProducts(@productType))=1
Begin
SELECT Category, Model
FROM PRODUCTS
WHERE Category=@productType
end
else
Begin
Print 'Category is not SKI'
End
当然,它返回所有类别,因为
中的条件不在表中的行上。它取决于传入的值。因此,如果该值匹配,则返回所有行。如果值不匹配,则不返回任何行
您需要在表中存储的目录中运行该函数。我不确定那是哪一列,但这里有一个猜测:
CREATE PROCEDURE usp_ProductsRead AS
BEGIN
SELECT p.Category, p.Model
FROM PRODUCTS p
WHERE dbo.validateProducts(p.Category) = 1
END;
EXEC dbo.usp_ProductsRead;
这看起来像SQL Server语法,所以我要删除MySQL标记。您的代码有什么问题?你有错误吗?没有,我没有错误。它向我显示了所有的数据……不仅仅是“滑雪”类别