【发布时间】:2016-07-19 17:49:30
【问题描述】:
我正在尝试使用一个参数创建服务,该参数将连接到 Oracle Db 执行复杂查询,并应以 JSON 格式返回结果。我正在检查是否有帮助的 Dapper ORM。由于查询很复杂
SELECT
SICD_PRIO_CATEGORY_DESCR.DESCR,
STRS_SESSION3.SESSION_NUM,
Trunc(STRS_SESSION.START_DATE),
STRS_SESSION3.START_DATE,
STCD_ACT_DESCR4.DESCR AS DOSE_ACTIVITY,
decode(( decode(sign(( DECODE(SIGN(( Trunc(ILRS_DOSE.RESULT_DATE) ) - ( trunc(STPR_STD_ANML.START_DATE) )),-1,( Trunc(ILRS_DOSE.RESULT_DATE) ) - ( trunc(STPR_STD_ANML.START_DATE) ),( Trunc(ILRS_DOSE.RESULT_DATE) ) - ( trunc(STPR_STD_ANML.START_DATE) )+( STPR_OPTIONS.VALUEN )) )),-1,'Y',0,'N','N') ), 'N', Decode (( STPR_OPTIONS.VALUEN ), '1', trunc((( DECODE(SIGN(( Trunc(ILRS_DOSE.RESULT_DATE) ) - ( trunc(STPR_STD_ANML.START_DATE) )),-1,( Trunc(ILRS_DOSE.RESULT_DATE) ) - ( trunc(STPR_STD_ANML.START_DATE) ),( Trunc(ILRS_DOSE.RESULT_DATE) ) - ( trunc(STPR_STD_ANML.START_DATE) )+( STPR_OPTIONS.VALUEN )) )-1) /7)+1, '0', trunc(( DECODE(SIGN(( Trunc(ILRS_DOSE.RESULT_DATE) ) - ( trunc(STPR_STD_ANML.START_DATE) )),-1,( Trunc(ILRS_DOSE.RESULT_DATE) ) - ( trunc(STPR_STD_ANML.START_DATE) ),( Trunc(ILRS_DOSE.RESULT_DATE) ) - ( trunc(STPR_STD_ANML.START_DATE) )+( STPR_OPTIONS.VALUEN )) )/7)), 'Y', (trunc((( DECODE(SIGN(( Trunc(ILRS_DOSE.RESULT_DATE) ) - ( trunc(STPR_STD_ANML.START_DATE) )),-1,( Trunc(ILRS_DOSE.RESULT_DATE) ) - ( trunc(STPR_STD_ANML.START_DATE) ),( Trunc(ILRS_DOSE.RESULT_DATE) ) - ( trunc(STPR_STD_ANML.START_DATE) )+( STPR_OPTIONS.VALUEN )) ) +1)/ 7)-1) , -999) AS RESULT_WEEK
所以在另一个问题中,我发现列名应该与类属性以及数据类型匹配。
public class StudyData
{
public string DESCR,
public string SESSION_NUM
}
返回类型可以是所有列的字符串,还是必须是特定的返回类型。此外,DateTime 将引用两个日期(如 18-DEC-12 和 18-DEC-12 07.52.25.977272000 AM -08:00),因为我在 C# 中看不到日期数据类型。我是 C# 编程新手,非常感谢任何帮助
【问题讨论】:
-
问题可能出在公共字段上,这也违反了最佳实践……您应该将它们设为属性
public string DESCR { get; set; }。 -
如果您只在一个地方使用此查询,建议您使用动态结果并将其映射到实际的 DTO...您是否有需要遵循的 JSON 对象的规范?发送?
-
konkked,这些是查询的一部分,需要执行的查询比较复杂。 JSON对象没有规范,只是询问我们是否可以得到JSON格式的查询响应。