存储过程混淆 [英] Stored Procedure Confusion

查看:22
本文介绍了存储过程混淆的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试创建一个存储过程,它将检查表中的列表名称和相应的(布尔值/位)值,即使其中一个记录的值为真,存储过程也应返回真,如果不是,则返回假.

I am trying to create a stored procedure which will check for a list names in a table and there corresponding (boolean/bit) values, even if one of record has value as true, stored procedure should return True, if not then return false.

这是桌子,

Table Name - FruitCrate
Column A (VarChar (Max)) - FruitName
Column B (bit)  -  Eatable

现在我想要一个存储过程,我可以提供一个 List FruitNames 并检查它们中的任何一个是否可以食用,然后返回 true 否则返回 false.

Now I want a stored procedure whom I can provide a List FruitNames and it checks if any of them is eatable then return true otherwise false.

不知道如何开始,因为从不发送列表作为存储过程的参数.

编辑

这是我正在尝试但出现语法错误的方法,

This is what I am trying but getting syntax error,

Create PROCEDURE [dbo].[ProcedureName]
(
    @FruitNames varchar(max)
)
AS

Select * From    
(SELECT * FROM  FruitCrate WHERE FruitName IN (' +@FruitNames+ '))

WHERE FruitCrate.Eatable= 1

错误**

... ')' 附近的语法不正确.... 关键字附近的语法不正确哪里".

... Incorrect syntax near ')'.... Incorrect syntax near the keyword 'WHERE'.

**

推荐答案

第 1 步:您可以将您的fruitNames 以逗号分隔(或任何其他不在任何水果名称中的分隔符,例如'!''|') 字符串

Step 1: You can send your fruitNames as a comma separated (or any other delimiter which is not in any fruit names, ex '!' or '|') string

第 2 步:您需要一个表值 T-Sql 函数来拆分分隔字符串 (比如这个)(比如表列名是myColumn)

Step 2: You need a Table Valued T-Sql Function to split a delimited string (Such as this) (say, table column name is myColumn)

CREATE FUNCTION  Split (@String nvarchar(4000), @Delimiter char(1))
RETURNS @Results TABLE (myColumn nvarchar(500))
AS
BEGIN

    --Function body
    RETURN @Results
END

第 3 步:编写一个存储过程,将拆分后的水果名称与表进行比较.

Step 3: Write a stored procedure to compare splitted fruitenames with the table.

CREATE PROCEDURE CheckEatables
   @fruitName nVarchar(4000) --Change the length as required
AS
BEGIN
    SELECT FruitName, COALESCE(Eatable,0) Eatable
    FROM FruitCrate fc JOIN dbo.Split(@fruitNames,',') fn
                   ON fc.FruitName = fn.myColumn
END

这篇关于存储过程混淆的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆