自定義的sql函式報錯「不是可以識別的內建函式名稱

2021-09-30 15:15:15 字數 1056 閱讀 6185

在sql中寫了這樣乙個自定義函式,這個函式式用來生成流水賬號的,賬號的格式是這樣的:s+日期字串+000,下乙個數字+001;每天的流水賬號從000開始,函式的建立**如下:

create function [dbo].[getsingleid]()

returns varchar(12)

asbegin

-- declare the return variable here

declare @temp varchar(12)

-- add the t-sql statements to compute the return value here

select @temp =

's'+ convert(varchar(8),getdate(),112)+ right(10000+convert(int,right(isnull(max(examinationid),0),4)+1),4)

from t_singlepatient

where left(examinationid,8) = convert(varchar(8),getdate(),112)

-- return the result of the function

return @temp

end

我想在每次在乙個表中插入一條記錄的時候在examinationid中自動插入該函式,也就是將這個欄位的預設值設定為getsingleid();如下圖所示:

先不說這個函式是不是能實現我之前預想的結果(結果是沒有實現),這樣設定預設值會報錯誤的 不是可以識別的內建函式名稱

網上說「如果缺少

"dbo."

就會提示

"不是可以識別的內建函式名稱

"的錯誤,

dbo

是databaseobject

的意思

但是我們在設定預設時間函式的時候就是在預設值裡面直接加上getdate()的,這個怎麼解釋呢?

SQL自定義函式

建立使用者自定義函式 標量函式 create function dbo.bmrs bmh as int returns int asbegin declare bmrs int select bmrs count 工號 from 銷售人員where 部門號 bmh return bmrs endgo...

sql 自定義函式

delimiter create definer function woshow try aid bigint returns bigint 20 language sql not deterministic sql security comment string begin if aid 0 th...

SQL自定義函式

自定義函式與儲存過程的區別 存在的意義 1.能夠在select等sql語句中直接使用自定義函式,儲存過程不行。2.自定義函式可以呼叫其他函式,也可以呼叫自己 遞迴 3.可以在表列和check 約束中使用自定義函式來實現特殊列或約束 4.自定義函式不能有任何 函式 是指對具有函式外作用域 例如資料庫表...