Как обновить столбцы, только если аргумент равен конкретному значению? - PullRequest
1 голос
/ 06 ноября 2019

У меня есть запрос, который должен обновлять столбцы, только если аргумент равен 1. Вот пример:

<cfquery name="updateQry" datasource="test">
    UPDATE Table1
    SET fname = form.fname,
        lname = form.lname,
        <cfif form.status eq 1>
            title = form.title,
        </cfif>
        last_update_dt = getDate()
    WHERE rec_id = form.record_id
 </cfquery>

Я хотел бы переместить этот запрос SQL в хранимую процедуру. Как я могу добиться того же процесса только с кодом SQL? Вместо <cfif form.status eq 1> title = @title,</cfif> как это можно заменить кодом SQL? Я использую базу данных Sybase и ColdFusion 2016. Этот код выше следует перенести в хранимую процедуру.

1 Ответ

3 голосов
/ 06 ноября 2019

Я думаю, вам нужно выражение case, что-то вроде этого:

UPDATE Table1
SET fname = form.fname,
    lname = form.lname,
    title = (case when form.status = 1 then form.title else table1.title end),
    last_update_dt = getDate()
WHERE rec_id = form.record_id;

В хранимой процедуре вы, вероятно, будете использовать параметры:

UPDATE Table1
SET fname = @fname,
    lname = @lname,
    title = (case when @status = 1 then @title else table1.title end),
    last_update_dt = getDate()
WHERE rec_id = #record_id;
...