現在遇見資料庫移型,
原資料庫為oracle需要移型到sqlserver中
其中ora中有自定義函式,并在自定義函式中呼叫存盤程序,
然,sqlserver中的自定義函式又沒有方法可以呼叫存盤程序?
uj5u.com熱心網友回復:
然而,mssql不支持function執行execuj5u.com熱心網友回復:
有解決方案嗎?
uj5u.com熱心網友回復:
做了如下測驗,確實不支持函式內部呼叫存盤程序Only functions and some extended stored procedures can be executed from within a function.
create table test
(col1 int)
insert into test values(1)
create procedure insertTest
as
begin
insert into test
select count(*)+1 from test
end
CREATE FUNCTION getTestCount
()
RETURNS int
AS
BEGIN
exec insertTest
declare @testCount int
select @testCount = (select count(*) from test)
RETURN @testCount
END
GO
select dbo.getTestCount()
uj5u.com熱心網友回復:
沒解決方案。 人家的規定就是這樣。你可以做 sqlclr 函式, 試下是否可以。
uj5u.com熱心網友回復:
這個只能修改代碼了,把存盤程序里的業務邏輯寫到function里。uj5u.com熱心網友回復:
sqlserver 沒有這種寫法哦!uj5u.com熱心網友回復:
嘗試重寫,把存盤程序寫成函式當然,函式的限制比較多,如果改不了的話,嘗試把對函式的呼叫改成存盤程序呼叫
uj5u.com熱心網友回復:
sql Server中的函式不可以呼叫存盤程序。并且,函式中不能執行增刪改,也不支持例外資訊截獲。
對應方法如下:
1.函式中如果只有例外資訊的里面有呼叫存盤程序,可把例外處理去掉,存盤程序舍棄。
2.如果函式中有增刪改,修正函式為存盤程序。
3.函式如果只是單純的呼叫,不在sql文(增刪改查)中執行,修正函式為存盤程序。
uj5u.com熱心網友回復:
能給個“栗子”嗎?
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/100579.html
標籤:疑難問題
上一篇:#日常
下一篇:你們的動力是什么啊?!!!!!
