Хранимая процедура в MS SQL Server 2005 - PullRequest
0 голосов
/ 11 августа 2011

Здесь я получил сценарий: когда я нажимаю кнопку в клиентском приложении (разработанном в Delphi), активируется хранимая процедура.Хранимая процедура сначала объявляет курсор для оператора select, который возвращает два столбца - BankID и BankCategoryID. Затем мне нужно извлечь каждую строку внутри курсора в запись, проверить BankCategoryID и вернуть набор результатов в соответствии с BankCategoryID, например:

CASE WHEN fetched_record.BankCategoryID=1  THEN
    SELECT STATEMENT1 WHEN fetched_record.BankCategoryID=2 THEN
    SELECT STATEMENT2 and so on...

и затем я возвращаю набор результатов, полученный из любого из указанных выше случаев, в мое клиентское приложение.Это возможно?

1 Ответ

2 голосов
/ 11 августа 2011

Возможно, вы захотите использовать IF в качестве управляющего оператора в вашем курсоре?

WHILE @@FETCH_STATUS = 0
BEGIN
    IF @BankCategoryID=1  
    BEGIN
       SELECT Baz From Bat;
       DECLARE @Spam bit; 
       SELECT @Spam = 0;
    END

    IF @BankCategoryID=2  
    BEGIN
       SELECT Foo FROM Bar;       
    END
  FETCH NEXT FROM MyCursor INTO @BankID, @BankCategory
END

Вот образец TSQL-курсора .Вы будете загружать два значения столбца в 2 переменные: @BankID и @BankCategoryID.то есть FETCH NEXT FROM MyCursor INTO @BankID, @BankCategoryID

В сторону: мне интересно, можно ли это сделать все без курсора?В любом случае вышеприведенное должно помочь вам в реализации большего количества операторов TSQL на каждой итерации вашего курсора.

...