2000下自定義函式和不確定性內建系統函式
我們經常在想自定義函式內呼叫一些不確定性的系統函式,可是天不作美系統會報錯,下面演示一下系統函式getdate
().
--建立函式
create
function
f_getsystemdate()
returns
datetime
asbegin
return
getdate()
endgo
--呼叫
select
dbo.
f_getsystemdate()
--刪除
drop
function
f_getsystemdate
/*訊息443,級別16,狀態1,過程f_getsystemdate,第5 行
在函式內不正確地使用了'getdate'。
*/
那麼我們如何來解決這個問題呢,參照http
://sqlserver2000
.databases
.aspfaq
.com
/how-do
-i-use
-getdate
-within-a
-user
-defined
-function
-udf
.html 作如下整理:
(注:以下以getdate
()為例說明解決方法)
--1、把不確定性的系統函式值作為引數傳入
--建立函式
create
function
f_getsystemdate
(@dt
datetime)
returns
datetime
asbegin
return
@dt
endgo
--呼叫
select
dbo.
f_getsystemdate
(getdate
())
/* -----------------------
2008-12-24 12:46:25.850
(1 行受影響)
*/
--呼叫
declare
@dt
datetime
set@dt
=getdate
()--或:set @dt = current_timestamp
select
dbo.
f_getsystemdate
(@dt)
/* -----------------------
2008-12-24 12:46:25.850
(1 行受影響)
*/--刪除
drop
function
f_getsystemdate
--2、檢視
create
view
v_currentsystemtime
asselect
getdate
()asdt
go create
function
f_getsystemdate()
returns
datetime
asbegin
declare
@dt
datetime
select
@dt
=dt
from
v_currentsystemtime
return
@dt
endgo
--呼叫
select
dbo.
f_getsystemdate()
/*-----------------------
2008-12-24 12:49:08.883
(1 行受影響)
*/
--刪除
drop
function
f_getsystemdate
drop
view
v_currentsystemtime
--3、擴充套件過程
--借助第三方工具做乙個dll然後在sql server中註冊成擴充套件過程,然後在函式裡直接呼叫。
--4、openquery,openrowset
create
function
f_getsystemdate()
returns
datetime
asbegin
declare
@dt
datetime
select
@dt=
dt
from
openrowset (
'sqloledb'
,'.'
;'sa ';''
, 'select current_timestamp as dt')
--from openrowset
--( 'sqloledb', '.'; 'sa '; '', 'select getdate() as dt')
--from openrowset
--('sqloledb','server=.;uid=sa;pwd=','select getdate() as dt')
--from openrowset
--('sqloledb','server=.;
--uid=sa;pwd=','select current_timestamp as dt')
return
@dt
endgo
--呼叫
select
dbo.
f_getsystemdate()
/*-----------------------
2008-12-24 12:55:11.583
(1 行受影響)
*/
--刪除
drop
function
f_getsystemdate
--如果有linkserver還可以這樣:
from
openquery
('flystone'
,'select dt = getdate()')
--5、openrowset+proc
usejhhis
go
create
proc
pr_getsystemdate
asbegin
select
getdate
()asdt
endgo
create
function
f_getsystemdate()
returns
datetime
asbegin
declare
@dt
datetime
select
@dt=
dt
from
openrowset (
'sqloledb'
,'.'
;'sa ';''
, ' exec jhhis.dbo.pr_getsystemdate ')
--from openrowset
--('sqloledb','server=.;uid=sa;pwd=','select getdate() as dt')
return
@dt
endgo
--呼叫
select
dbo.
f_getsystemdate()
/*-----------------------
2008-12-24 13:05:06.250
(1 行受影響)
*/
--刪除
drop
function
f_getsystemdate
drop
proc
pr_getsystemdate
--說明:本blog參照了
--大家可以去看看
Ubuntu16 04下自定義命令
每次啟動pycharm的時候需要敲一段很長的文字,真的是感覺好麻煩啊,如果能直接敲命令啟動就好了,既裝b又實用的 那麼到底應該怎麼做呢?其實挺簡單的 在檔案 root bashrc 中新增下邊的幾行,就可以完全搞定 alias pycharm sh home zhang downloads pych...
自定義函式及函式呼叫
在論壇中,發現有的道友對自定義函式的呼叫存在這以下問題 1 自定義函式宣告 函式呼叫 函式實現概念混淆 2 形參和實參混淆 3 自定義函式引數的傳值方式混淆 傳來傳去都不知道傳的到底是什麼?接下來,我就重點圍繞道友們常見的問題,說一說 1 自定義函式宣告 函式呼叫 函式實現 比如 交換兩個數的值的自...
SQL 2000使用者自定義函式
一。sql server 的三種自定義函式 自定義函式 是我們平常的說法,而 使用者定義的函式 是 sql server 中書面的說法。sql server 2000 允許使用者建立自定義函式,自定義函式可以有返回值。自定義函式分為 標量值函式或表值函式 錶值函式又可分為 內嵌錶值函式 行內函式 或...