我是 SAS 4GL 的新手……
是否可以从表中提取哪些列是主键或复合主键的一部分?我需要将它们的值合并到输出数据集的一列中。
问题是,作为输入,我可以获得不同的表格,但我不知道他们的定义。
我是 SAS 4GL 的新手……
是否可以从表中提取哪些列是主键或复合主键的一部分?我需要将它们的值合并到输出数据集的一列中。
问题是,作为输入,我可以获得不同的表格,但我不知道他们的定义。
如果定义了索引,那么您可以找出该索引中使用了哪些变量。参见例如:
data blah(index=(name));
set sashelp.class;
run;
proc contents data=blah out=blahconts;
run;
blahconts
有表明它name
在一个简单索引中的列,并且它总共有 1 个索引。
此外,您可以使用外键约束,例如此 SAS 文档示例中的以下内容:
proc sql;
create table work.mystates
(state char(15),
population num,
continent char(15),
/* contraint specifications */
constraint prim_key primary key(state),
constraint population check(population gt 0),
constraint continent check(continent in ('North America', 'Oceania')));
create table work.uspostal
(name char(15),
code char(2) not null, /* constraint specified as */
/* a column attribute */
constraint for_key foreign key(name) /* links NAME to the */
references work.mystates /* primary key in MYSTATES */
on delete restrict /* forbids deletions to STATE */
/* unless there is no */
/* matching NAME value */
on update set null); /* allows updates to STATE, */
/* changes matching NAME */
/* values to missing */
quit;
proc contents data=uspostal out=postalconts;
run;
proc sql;
describe table constraints uspostal;
quit;
这会将约束信息写入输出窗口。从输出数据集中,您可以看到变量在一个简单的索引中。您可以在 ODS OUTPUT 中包装这些(PROC CONTENTS
或DESCRIBE TABLE CONSTRAINTS
)中的任何一个,以将信息获取到数据集:
ods output IntegrityConstraints=postalICs;
proc contents data=uspostal out=postalconts;
run;
ods output close;
或者
ods output IntegrityConstraints=postalICs;
proc sql;
describe table constraints uspostal;
quit;
ods output close;