在我的 Java 程序中,我必须调用一个名为 FooBar(null)
的存储过程。该程序试图独立于数据库平台。一些 SQL 语句以编程方式组合在一起,其中之一是:
insert into foo_bar (id, user, timestmp) values (1, 'foo', FooBar(null));
这适用于 Oracle、HSLQDB、MySQL。现在我必须让它在 MSSQL 上工作。我创建了 FooBar 函数。我使用具有名为
foo
的默认架构的用户登录数据库。仅当我将架构名称放在函数名称之前,此语句才有效:
insert into foo_bar (id, user, timestmp) values (1, 'foo', foo.FooBar(null));
如果我登录到数据库然后
exec FooBar(null)
工作没有 foo.
你知道如何在 MSSQL 上避免这个 foo.
吗? 最佳答案
不幸的是,与几乎所有其他对象不同,DB 函数必须使用 T-SQL 中的模式名称进行完全限定。
但是,如果您以编程方式将语句放在一起,则可以修改它以查看 JDBC 驱动程序是否为 MSSQL,在这种情况下,添加模式名称。
关于java - 在不指定架构的情况下调用 MSSQL 函数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6303484/