【问题标题】:stored procedure where condition not working条件不起作用的存储过程
【发布时间】:2015-05-05 09:19:20
【问题描述】:

这是我从表中选择数据的存储过程。但如果我把 where 条件放在里面。然后它抛出一个错误

“'=' 附近的语法不正确。”

但是如果我删除 where 条件,那么这个查询就可以正常工作。谁能告诉我我在哪里做错了什么。

alter procedure [dbo].[GetCompleteCPTDetails]
    @Practice_Short_Name varchar(50) = null,
    @Uploaded_Date varchar(max) = null
as
begin
DECLARE @CPTtablename varchar(100)
DECLARE @vQuery NVARCHAR(max)
set @CPTtablename = 'ACER_CLAIMS_MASTER_DETAIL_Hist_'+@Practice_Short_Name+''
SET @vQuery = 'select Practice_Short_Name,Service_Date_From,Carrier_Name,
   Location_Description,Patient_Number,Patient_First_Name,
   Patient_Last_Name,Voucher_Number,Procedure_Code,Service_Fees,
   Service_Payments,Service_Adjustments,Acer_Status,Acer_Allowed_Amount    
from ' + @CPTtablename + 'where Uploaded_Date ='+ @Uploaded_Date +'
order by acer_status asc, Service_Date_From desc, Patient_First_Name asc'

EXEC (@vQuery)

end
GO

【问题讨论】:

  • EXEC 之前尝试PRINT @vQuery,看看正在生成什么查询。
  • 在使用nvarchar 时,您应该在所有文字字符串之前使用N。即set @CPTtablename = N'ACER_CLAIMS_MASTER_DETAIL_Hist_'...。虽然不确定它是否能解决您看到的问题,但这是评论而不是答案

标签: sql sql-server-2008 stored-procedures


【解决方案1】:

对于日期@Uploaded_Date,您需要如下配额

alter procedure [dbo].[GetCompleteCPTDetails]
    @Practice_Short_Name varchar(50) = null,
    @Uploaded_Date varchar(max) = null
as
begin
DECLARE @CPTtablename varchar(100)
DECLARE @vQuery NVARCHAR(max)
set @CPTtablename = 'ACER_CLAIMS_MASTER_DETAIL_Hist_'+@Practice_Short_Name+''
SET @vQuery = 'select Practice_Short_Name,Service_Date_From,Carrier_Name,
   Location_Description,Patient_Number,Patient_First_Name,
   Patient_Last_Name,Voucher_Number,Procedure_Code,Service_Fees,
   Service_Payments,Service_Adjustments,Acer_Status,Acer_Allowed_Amount    
from ' + @CPTtablename + ' where Uploaded_Date ='''+ @Uploaded_Date +'''
order by acer_status asc, Service_Date_From desc, Patient_First_Name asc'

EXEC (@vQuery)

end
GO

【讨论】:

  • @SaurabhMosesRam 我在where 之前添加了规范,请立即尝试
  • 我认为您还需要在order by acer_status之前添加空格
  • @rikitikitik 它看起来像Uploaded_Date ='2014-01-01'order by 所以我认为这很好
猜你喜欢
  • 2020-06-15
  • 2020-04-06
  • 2020-11-10
  • 2014-12-31
  • 1970-01-01
  • 2011-02-20
  • 2012-04-07
相关资源
最近更新 更多