如何将换行符插入 Stata 宏变量?

How do I insert newline characters into Stata macro variables?

我有一个 Stata 插件,它允许我从文件中读取 SQL,运行 它在我的 PostgreSQL 服务器上,并将数据传送到 Stata。

不幸的是,我的很多 SQL 依赖于正确解析换行符以生成正确的(甚至有效的)SQL。例如,

SELECT *
FROM some_table
-- Require something to be true
WHERE some_boolean;

在 Stata 中以 SELECT * FROM some_table -- Require something to be true WHERE some_boolean; 结束,这显然是行不通的。

这是我用来读取数据的 .ado 文件。我尝试了很多方法,但找不到将换行符放入 exec 变量的方法。

program define loadsql
*! Load the output of an SQL file into Stata, version 1.4 (iandgow@gmail.com)
version 13.1
syntax using/, CONN(string)

#delimit;
tempname sqlfile exec line;

file open `sqlfile' using `"`using'"', read text;
file read `sqlfile' `line';

while r(eof)==0 {;
    local `exec' `"``exec'' ``line'' 
     "';
    file read `sqlfile' `line';
};

file close `sqlfile';

* display "`conn'";

pgload "`conn'" "``exec''", clear;
* pgload "``dsn''" "SELECT permno, date, abs(prc) AS prc FROM crsp.dsf LIMIT 10", clear;

end;

使用 char(10)(或者在 Windows 上使用 char(13) + char(10))。

因此,替换

local `exec' `"``exec'' ``line'' 
 "';

在问题中提供的 .ado 文件中

local `exec' = "``exec''" + char(10) + "``line''";