我正在尝试通过以下方式在 Stata 中注入 SQL 语句:
obdc load, exec('"select * from table_name as u, l2010 as lv where u.IntUft='I'"') dsn("some_db") clear
但这给了我一个
r(198)
错误说table() or exec() is required
.
当我用整数尝试相同的代码时,它确实有效。也就是说,
obdc load, exec('"select * from table_name as u, l2010 as lv where u.Ar=2000"') dsn("some_db") clear
作品。
关于如何像在 Stata 中那样比较 SQL 语句中的字符串有什么想法吗?
我自己没有使用过
obdc
,所以我不确定它是否是完整的解决方案,但我发现了两个 Stata 语法错误。
在 Stata 中,复合字符串中的前导单引号必须是反引号
`
。所以你需要exec(`"select
。同样,在引用本地宏时,您也需要以反引号开头。所以你需要u.IntUft=`I'"'
.
在此处查看完整示例:
obdc load, exec(`"select * from table_name as u, l2010 as lv where u.IntUft=`I'"') dsn("some_db") clear
不确定是否需要复合字符串,因此修复本地引用可能就足够了。为什么你的第二个例子在技术上也有语法错误取决于命令
obdc
如何处理该字符串输入。