sql存储过程单引号

时间:2013-12-26 11:50:33

标签: sql sql-server

我有一个存储过程如下

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中提供查询

2 个答案:

答案 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