sql - PROC DB2EXT 查询中的宏?
问题描述
是否可以将宏变量放在 PROC DB2EXT 查询中?
这有效:
WHERE SDD BETWEEN '01.05.2018' AND '30.05.2018'
但是我所有插入宏变量的尝试都会导致错误
宏声明
/* Statement in SAS, declaring the Macro, and transfering in to the remote session */
%let month = 05;
%SYSLPUT MONTH = &month;
%PUT &MONTH;
DB2EXT SQL
/* Error(-180): DSN00180E THE DATE, TIME, OR TIMESTAMP VALUE 01."&month.".2018 IS INVALID */
WHERE SDD BETWEEN '01."&month.".2018' AND '30.05.2018'
/* Error(-206): DSN00206E 01.MAY.2018 IS NOT VALID IN THE CONTEXT WHERE IT IS USED */
WHERE SDD BETWEEN "01.&month..2018" AND '30.05.2018'
/* Futile attemps */
WHERE SDD BETWEEN '01&month2018' AND '30.05.2018'
WHERE SDD BETWEEN '01month2018' AND '30.05.2018'
解决方案
在生成需要包含评估宏变量的单引号文字时,使用以下构造:
%str(%')macro-evaluation%str(%')
忽略上面代码的稍微奇怪的堆栈溢出(SO)着色。SO 渲染器无法将单引号破译为 %str() 闭包的一部分
所以你的情况可能是
%str(%`)01&month.2018%str(%')
推荐阅读
- reactjs - 为函数而不是组件反应延迟加载
- facebook - 当用户通过“应用程序和网站”设置从 Facebook 删除我的应用程序并尝试在我的应用程序中重新连接时会发生什么?
- sharepoint-online - 是否可以将值从属性传递到 SPFx 中的 CSS?
- powershell - PowerShell:带有字符串参数的 pwsh -Command/-File 包含要传递给以根路径为值的子进程的参数
- react-hook-form - react-hook-form:如何在 reactstrap CustomInput 中重置标签
- apache-spark - spark 2.4:AQE 是否优先于 spark.sql.shuffle.partitions?
- javascript - 如何设置流响应的标头,以便我可以推断 Node.js 中的下一个 stream.on("data", ()=>{}) 处理程序?
- sql - 在特定日期添加 where 子句
- c++ - Visual Studio Community 2019 x86 与 x64 中 C++ 代码的不同结果
- jasper-reports - JasperReports - 如何打破列表/乐队