是否可以使用DB2变量而不指定其模式?

时间:2018-10-29 15:42:52

标签: sql db2

使用到DB2的JDBC连接,我使用URL jdbc:db2://192.168.56.208:50000/db001:currentSchema=TZTC;指定了缺省模式。然后,我在默认模式中创建了一个DB2变量:

create variable my_var1 smallint default 1;

但是,当我尝试设置或显示它时,我不得不指定其架构名称。当我尝试时失败:

set my_var1 = 123;
Error: DB2 SQL Error: SQLCODE=-206, SQLSTATE=42703, SQLERRMC=MY_VAR1, DRIVER=3.53.95

select my_var1 from sysibm.sysdummy1;
Error: DB2 SQL Error: SQLCODE=-206, SQLSTATE=42703, SQLERRMC=MY_VAR1, DRIVER=3.53.95

但是,如果我指定了架构名称,则一切正常:

set tztc.my_var1 = 123; -- works
select tztc.my_var1 from sysibm.sysdummy1; -- returns 123

是否可以使用DB2变量而不指定其模式?我希望保留它与项目中所有其他SQL代码一样的无模式。

2 个答案:

答案 0 :(得分:1)

Variables always are created in a schemaexplicitly or implicitly。如果您在同一模式中,那么您应该能够在没有模式名称的情况下引用该变量。因此,应该可以按您要求的无模式方式实现它。

docs have the rules关于如何解析变量名。

请注意,模块中定义的变量与常规SQL(语句)上下文中定义的变量之间存在差异。

答案 1 :(得分:-1)

限定变量适用于iseries db2。

create variable mylib.my_var1 smallint default 1;
set mylib.my_var1 = 12;

这也适用于iseries db2。

create variable danny117 smallint default 1;
set danny117 = 12;
drop variable danny117;