我正在尝试向where子句中添加几个参数来代替column_name
和value。我在网上看到的所有内容都给出了存储过程中列的值的参数示例,但不是列本身。将参数添加到存储过程的SQL where子句column_name
这是我到目前为止有:
CREATE PROCEDURE [mobile].[p_get_insptn_log_by_date]
(@SEARCHBY SYSNAME, @SEARCHVALUE NVARCHAR(100))
AS
SET NOCOUNT ON
SELECT
[id], [application_name], [login_id], [log_ts],
[insptn_log_msg_type_code], [log_msg_text], [insptn_log_lvl_code]
FROM
[dbo].[Insptn_log]
WHERE
insptn_log_lvl_code <> 'info' AND
CASE
WHEN @SEARCHBY = 'application_name'
THEN application_name = @SEARCHVALUE
WHEN @SEARCHBY = 'login_id'
THEN login_id = @SEARCHVALUE
WHEN @SEARCHBY = 'log_ts' log_ts < CONVERT(DATETIME, @SEARCHVALUE)
END
因为它是,SQL Server Management Studio中抛出一个错误的情况下语句中的第=
标志,并在第二WHEN
下,说有一个语法错误CASE
声明。
我只是在寻找正确的语法来完成这项任务。任何帮助将不胜感激。
+++++编辑+++++
我以前没有提及的是,@SEARCHVALUE
的类型必须能够从NVARCHAR
去DATETIME
当用户选择“log_ts”作为@SEARCHBY
值。我还更新了上面的脚本,用于从我的MVC应用程序进入的参数的DataTypes。
您的@SEARCHBY不能是CHAR(它长于1个字符)。 – DVT