仅当参数等于特定值时如何更新列?
How to update columns only if argument is equal to specific value?
我的查询应该仅在参数等于 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,上面这段代码应该移到存储过程中。
我想你想要一个 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;
我的查询应该仅在参数等于 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,上面这段代码应该移到存储过程中。
我想你想要一个 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;