2013-09-09 7 views
1

Я пытаюсь создать хранимую процедуру, которая будет проверять имена списков в таблице и соответствующие значения (логические/битовые), даже если одна из записей имеет значение как значение true, хранимая процедура должна возвращать значение True, если нет, то верните false.Сохраненная процедура Confusion

Вот таблица,

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

Теперь я хочу хранимую процедуру, которую я могу предоставить список FruitNames и проверяет, является ли какой-либо из них съедобные, то возвращает истину иначе ложь.

Не знаете, как начать, как никогда отправляемый список, в качестве параметра хранимой процедуры.

Редактировать

Это то, что я пытаюсь, но получаю ошибку синтаксиса,

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

Select * From  
(SELECT * FROM FruitCrate WHERE FruitName IN (' [email protected]+ ')) 

WHERE FruitCrate.Eatable= 1 

Ошибка **

... Неправильный синтаксис около «) '.... Неправильный синтаксис рядом с ключевым словом «ГДЕ».

**

ответ

1

Шаг 1: Вы можете отправить fruitNames как запятую (или любой другой разделитель, который не в каких-либо фруктов имена, экс '!' или '|') строки

Шаг 2: Вам нужна таблица оцененной T-Sql Функция для разделения строки с разделителями (Such as this) (например, имя столбца таблицы является myColumn)

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

    --Function body 
    RETURN @Results 
END 

Этап 3: Напишите хранимую процедуру для сравнения разделенных имен фруктов с таблицей.

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 
+0

спасибо, это скалярная функция или таблица функции, я собираюсь попробовать его сейчас – Mathematics

+0

Вам нужен 'Таблица оцененной Function'. – Kaf

+1

Я не пробовал, так как я собираюсь изменить свой подход, но приму ответ – Mathematics

1

Вы можете обратиться к этой question, который использует разделенный запятыми список ID.

Вы будете иметь ту же реализацию в хранимой процедуре