我有一个case语句,它将varchar变量@stored_proc_name
设置为我稍后想要调用的过程的名称。我想调用的一个过程将varchar作为参数(也是一个int)。我该怎么做呢?目前我所拥有的是这个
SELECT @stored_proc_name = CASE @p_process_name
WHEN 'misdate' THEN 'findb..sp_cycle_date_daily'
WHEN 'balpremmis' THEN 'findb..pc_bal_writ_prem'
WHEN 'ursctl' THEN 'MIS_feeds..pc_mis_update_feed_control "URSPO", 1'
ELSE NULL
END
EXECUTE @stored_proc_name
最后一个是我的带有参数的过程,其中“URSPO”应该是第一个,1是int。它运行在SQL Server 2k8上(我想我记得这个版本和旧版本之间的单引号和双引号有些不同)。我有什么正确的吗?我承认我还没有测试过,但它是一个巨大的过程的一部分,我现在真的不想开始。
感谢您的帮助!
答案 0 :(得分:2)
要转义字符串文字中的单引号,请使用如下所示的双引号。有关详细信息,请参阅Constants section in the BOL:
select ' '' ' -- creates a string containing a space, a single quote, and another space
在您的示例中,这将是字符串:
'MIS_feeds..pc_mis_update_feed_control ''URSPO'', 1'
如果您要在LIKE表达式中使用此字符串,则可能需要引用this question。
如果您要构建一个字符串作为SQL标识符,您可能希望使用QUOTENAME函数将其转义。
答案 1 :(得分:0)
您可以使用以下代码:
set quoted_identifier off;
Select "'Hi'"
quoted_identifiere可让您使用"而不是';