我有一个存储过程如下
create procedure TestTry
BEGIN
declare @query varchar(max)
SET NOCOUNT ON;
set @query = 'select * from table1 when RECORD_FLAG <> 't'
then Convert(Decimal(10,4),ISNULL(T.HISTORY_PCR ,0)) else '0'';
exec (@query)
end
在RECORD_FLAG&lt;&gt;之后我想用单引号给它,并在单引号中给出0如何给出
以上显示的是实时示例我的查询很大我只能在@query中提供查询
答案 0 :(得分:4)
使用''(double)代表'(单曲)
set @query = 'select * from table1 when RECORD_FLAG <> ''t''
then Convert(Decimal(10,4),ISNULL(T.HISTORY_PCR ,0)) else ''0''';
答案 1 :(得分:0)
create procedure TestTry
AS --<-- you'er also missing AS key word here
BEGIN
SET NOCOUNT ON;
declare @query varchar(max)
set @query = 'select * from table1 when RECORD_FLAG <> ''t''
then Convert(Decimal(10,4),ISNULL(T.HISTORY_PCR ,0)) else ''0''';
EXECUTE sp_executesql @query --<-- use this syntax to execute dynamic sql
end
此外,您不需要使用动态SQL来进行这样简单的查询, 动态sql是sql的恶魔,你想避免使用它 只要有可能。
您的查询
您的查询语法也不正确,您尝试按如下方式执行查询
select *
from table1
when RECORD_FLAG <> 't' --<-- cant use WHEN without the CASE statement also you
--cannot use a Case statement here right after your table name