包含当前命名空间名称。
大纲$ZNSPACE
描述
$ZNSPACE
包含当前命名空间的名称。通过设置$ZNSPACE
,可以更改当前名称空间。
要获取当前命名空间名称,请执行以下操作:
DHC-APP>SET ns=$ZNSPACE
DHC-APP>WRITE ns
DHC-APP
还可以通过调用%SYSTEM.SYS
类的Namespace()
方法来获取当前命名空间的名称,如下所示:
DHC-APP>SET ns=$SYSTEM.SYS.NameSpace()
DHC-APP>WRITE ns
DHC-APP
可以使用%SYS.Namespace
类的Existes()
方法测试命名空间是否已定义,如下所示:
DHC-APP>WRITE ##class(%SYS.Namespace).Exists("USER")
1
DHC-APP>WRITE ##class(%SYS.Namespace).Exists("LOSER")
0
对于UNIX®系统,默认命名空间建立为系统配置选项。对于Windows系统,它是使用命令行启动选项设置的。
命名空间名称不区分大小写。InterSystems IRIS始终以全大写字母显示显式名称空间名称,以全小写字母显示隐含的名称空间名称。
要获取指定进程的命名空间名称,请使用%SYS.ProcessQuery
类的方法,如下例所示:
DHC-APP>WRITE ##CLASS(%SYS.ProcessQuery).%OpenId($JOB).NameSpaceGet()
DHC-APP
设置当前命名空间
可以使用ZNSPACE
命令、SET $NAMESPACE
、SET $ZNSPACE
或%cd
实用程序更改当前名称空间。
-
在终端命令提示符下,
ZNSPACE
命令是更改名称空间的首选方式。SET $ZNSPACE
在功能上与ZNSPACE
命令相同。 -
在代码例程中,新建
$NAMESPACE
,然后设置$NAMESPACE = NAMESPACE
是更改当前名称空间的首选方式。通过使用new $NAMESPACE
和SET $NAMESPACE
,可以建立一个名称空间上下文,该上下文在方法结束或发生意外错误时自动恢复到前一个名称空间。
可以使用SET $ZNSPACE
更改进程的当前命名空间。将新命名空间指定为字符串文字或计算结果为带引号的字符串的变量或表达式。可以指定显式名称空间(“NAMESPACE”
)或隐式名称空间(“^SYSTEM^DIR”或“^^DIR”
)。
如果指定当前命名空间,则SET $ZNSPACE
不执行任何操作,也不返回任何错误。如果指定了一个未定义的名称空间,则SET $ZNSPACE
会生成一个<NAMESPACE>
错误。
不能new $ZNSPACE
特殊变量。
在以下示例中,如果当前命名空间不是USER
,则SET $ZNSPACE
命令会将当前命名空间更改为USER
。请注意,由于if
测试,命名空间必须全部用大写字母指定。
/// d ##class(PHA.TEST.SpecialVariables).ZNSPACE()
ClassMethod ZNSPACE()
{
SET ns="USER"
IF $ZNSPACE=ns {
WRITE !,"命名空间已经 ",$ZNSPACE
} ELSEIF 1=##class(%SYS.Namespace).Exists(ns) {
WRITE !,"命名空间是 ",$ZNSPACE
SET $ZNSPACE=ns
WRITE !,"将命名空间设置为 ",$ZNSPACE
} ELSE {
WRITE !,ns," 不是定义的命名空间"
}
QUIT
}
DHC-APP>d ##class(PHA.TEST.SpecialVariables).ZNSPACE()
命名空间是 DHC-APP
将命名空间设置为 USER
此示例要求UnnownUser
已分配%DB_IRISSYS
和%DB_USER
角色。