使用到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代码一样的无模式。
答案 0 :(得分:1)
Variables always are created in a schema,explicitly 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;