2000下自定義函式呼叫不確定性內建系統函式

2021-08-23 11:44:29 字數 4543 閱讀 2008

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中註冊成擴充套件過程,然後在函式裡直接呼叫。

--4openquery,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()')

--5openrowsetproc

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 允許使用者建立自定義函式,自定義函式可以有返回值。自定義函式分為 標量值函式或表值函式 錶值函式又可分為 內嵌錶值函式 行內函式 或...