2011-06-10 75 views
4

在我的Java程序中,我必須調用名爲FooBar(null)的存儲過程。該程序試圖成爲db平臺獨立。一些SQL語句以編程方式放在一起,其中一個是:在不指定模式的情況下調用MSSQL函數

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. 你知道如何避免這種foo.上MSSQL?

回答

2

不幸的是,與幾乎所有其他對象,DB功能必須與完全合格T-SQL中的模式名稱。

如果您以編程方式將語句放在一起,您可以通過它來查看JDBC驅動程序是否爲MSSQL,並在這種情況下添加模式名稱。

1

你可以嘗試synonym

CREATE SYNOMYM FooBar FOR foo.FooBar; 

如果失敗,你的運氣了......

+0

謝謝,但這不起作用.. :-( – jabal 2011-06-10 08:30:42

相關問題