任何人都可以帮我正确格式化我的Visual Studio的SQL查询,我得到一个错误,它说Newline in constant。
下面是我的代码简称代码,它查看主序列,对其进行计数,如果有多于1,则split_dlv将使用值1进行更新。
SqlCommand cmdUpd2 = new SqlCommand(" WITH cte AS(
+ "SELECT master_seq"
+ "FROM[ZS_CS_EVO_Integration].[dbo].[CS_Consolidation]"
+ "where delivery_date = yesterday and[master_seq] <> 0"
+ "GROUP BY master_seq"
+ " HAVING count(master_seq) > 1 '" + yesterday + "'", IntConnect)
+ "UPDATE c"
+ "SET[split_dlv] = 1"
+ "FROM[dbo].[CS_Consolidation] c"
+ "INNER JOIN cte t"
+ "ON t.master_seq = c.master_seq and c.delivery_date = yesterday))";
答案 0 :(得分:1)
可能是您的错误,因为您错过了;在使用语句之前,应该是这样的;使用
最好使用 StringBuilder 而不是字符串append.StringBuilder占用更少的内存然后字符串,因为它初始化对象一次,而字符串占用每个追加操作的内存,因此使用更多的内存。
StringBuilder sb=new StringBuilder();
sb.Append(";WITH cte AS(");
sb.Append(" SELECT master_seq");
sb.Append(" FROM[ZS_CS_EVO_Integration].[dbo].[CS_Consolidation]");
sb.Append(" where delivery_date = yesterday and[master_seq] <> 0");
sb.Append(" GROUP BY master_seq");
sb.Append(" HAVING count(master_seq) > 1 '" + yesterday + "'");
sb.Append(" , IntConnect)");
sb.Append(" UPDATE c");
sb.Append(" SET[split_dlv] = 1");
sb.Append(" FROM[dbo].[CS_Consolidation] c");
sb.Append(" INNER JOIN cte t");
sb.Append(" ON t.master_seq = c.master_seq and c.delivery_date = yesterday))");
SqlCommand cmdUpd2 = new SqlCommand(sb.ToString());
注意:我仍然不清楚在查询中使用 sb.Append(“,IntConnect)”); ,请更新它,然后尝试
答案 1 :(得分:0)
为什么在代码中搞乱大量查询只需将sql代码放在View或Procedure下,然后在sql命令中执行视图或过程。
但请注意,对于一个程序,命令将是
command.CommandType = CommandType.StoredProcedure;
这将减少所有的混乱
答案 2 :(得分:0)
您可以在字符串前添加+ "yoda yoda"
符号,这样它就可以跨越多行。那么你不需要到处都有string.Format
如果您需要将变量注入其中,那么您可以将整个内容包装在{{1}}
中