sql-server - 使用 print @sql 调试动态 SQL?
问题描述
我无法发现我在这里做错了什么。我希望能够使用 print 命令进行调试,但我无法让它工作,请在此处指出我做错了什么
= " SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;"
+ " DECLARE @sql NVARCHAR(MAX)"
+ " SELECT @sql = COALESCE(@sql + N' UNION ', N'') + N'hr.client ,RTRIM(LTRIM(hc.facility)) AS face ,h.gode ,h.rode ,hr.*"
+ " FROM B1' + CONVERT(NVARCHAR(MAX), RIGHT(CONCAT('00000',dbname),5)) + '.dbo.herpa h "
+ " JOIN B1' + CONVERT(NVARCHAR(MAX), RIGHT(CONCAT('00000',dbname),5)) + '.dbo.herpaderpa hr ON hr.[counter] = h.rink "
+ " JOIN B1' + CONVERT(NVARCHAR(MAX), RIGHT(CONCAT('00000',dbname),5)) + '.dbo.herpacerpa hc ON hc.[counter] = hr.cink "
+ " WHERE 1=1 "
+ IIf(IsNothing(Parameters!StartDate.Value),"", " AND (hr.r_date > DATEADD(DAY,-1,''"
+ Parameters!StartDate.Value
+ "'')) ")
+ IIf(IsNothing(Parameters!EndDate.Value),"", " AND (hr.r_date < DATEADD(DAY,1,''"
+ Parameters!EndDate.Value
+ "'')) ")
+ " AND hr.NPI IN (''" + Join(Parameters!NPI.Value,"'',''") + "'') "
+ IIf(Array.IndexOf(Parameters!Cat.Value, "ANY") > -1, "", " AND hr.cat IN (''" + Join(Parameters!Cat.Value,"'',''") + "'') ")
+ IIf(Array.IndexOf(Parameters!Gode.Value, "ANY") > -1, "", " AND h.gode IN (''" + Join(Parameters!Gode.Value,"'',''") + "'') ")
+ IIf(Array.IndexOf(Parameters!Rode.Value, "ANY") > -1, "", " AND h.rode IN (''" + Join(Parameters!Rode.Value,"'',''") + "'') ")
+ "' "
+ " FROM (VALUES "
+ Parameters!SC.Value
+ ") t (dbname) "
+ " exec sp_executesql @sql "
我已将整个内容包装在 @SQL 中,然后尝试打印 @sql 但是,没有返回任何内容。请让我知道我在这里做错了什么
解决方案
请参阅本节:
+ " WHERE 1=1 and "
+ IIf(IsNothing(Parameters!StartDate.Value),"", " AND (hr.r_date > DATEADD(DAY,-1,''"
第一行以.结尾and
。
在下一行,如果值不是 Nothing,则添加以开头的部分AND
。
导致WHERE 1=1 and AND ...
推荐阅读
- selenium - 在 nunit 控制台 c# 中运行所有测试后如何发送结果文件
- sql - 如何将 SQL 中临时生成的输出存储到表中
- docker - 如何使用提交的哈希构建 Docker 镜像
- ruby - 如何每 x 秒启动一个新线程
- javascript - 将 JS 代码应用于动态创建的 Range Slider
- javascript - SlateJs RenderMark 在多个插件中
- java - 如何使用处理和 UDP 接收 Tello 无人机的视频流
- node.js - 溢出排序阶段缓冲的 33554438 字节数据使用量超过了 33554432 字节的内部限制 错误?
- php - 用 php 让 html 爆炸?
- c# - SignalR 客户端接收来自仪表板客户端而不是电子商务客户端的调用