密码作为libname语句中的宏变量

时间:2015-11-05 11:33:21

标签: macros sas

我想在libname语句中调用一个宏变量作为密码,但似乎无效。 我写的libname语句是

%let pswd=ABCD
libname sa2st oracle path='wegtrse' user=myname password='&pswd' defer=no
connection=globalread readbuff=4000 ;

这会产生错误

Error in the libname statement

并在日志中

NOTE: Line generated by the macro variable "PSWD".
18   Xpswd
  ----
  22

如何在此libname语句中调用宏变量?

2 个答案:

答案 0 :(得分:3)

不会在单引号内部评估宏触发器。请改用双引号字符。还要确保在宏变量的赋值中包含结束分号。

MultipartEntity entity = new MultipartEntity();
entity.addPart("key","value");
.....
.....
..... all keys 
httppost.setEntity(entity);

答案 1 :(得分:1)

将此问题与您的相关问题(SAS/Connect to Oracle with rsubmit)联系起来,如果您担心以明文形式存储密码,可以使用PWENCODE过程对其进行加密,然后在libname语句中使用它。

/* One off (or when password changes), then take {SAS002} result from log */
proc pwencode="mylongpassword" method=sas002 ; run ;

%LET USR = bilbobaggins ;
%LET PWD = {SAS002}B02D643D06D400915C1E7F831D448FD5266E98F15A282918 ;

libname mylib oracle user="&USR" pass="&PWD" path='wegtrse' ;