1. 程式人生 > >2000下自定義函式呼叫不確定性內建系統函式

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

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

作者:hapyflystoneblog:http://blog.csdn.net/happyflytone

轉載請註明出處

  我們經常在想自定義函式內呼叫一些不確定性的系統函式,可是天不作美系統會報錯,下面演示一下系統函式getdate().

--建立函式

createfunction f_getsystemdate()

returns datetime

as

begin

returngetdate()

end

go

--呼叫

select dbo.f_getsystemdate()

--刪除

dropfunction 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、把不確定性的系統函式值作為引數傳入

--建立函式

createfunction f_getsystemdate(@dt datetime)

returns datetime

as

begin

return @dt

end

go

--呼叫

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 行受影響)

*/

--

刪除

dropfunction f_getsystemdate

--2、檢視

createview v_currentsystemtime

as

selectgetdate()as dt

go

createfunction f_getsystemdate()

returns datetime

as

begin

declare @dt datetime

select @dt = dt from v_currentsystemtime

return @dt

end

go

--呼叫

select dbo.f_getsystemdate()

/*

-----------------------

2008-12-24 12:49:08.883

(1 行受影響)

*/

--刪除

dropfunction f_getsystemdate

dropview v_currentsystemtime

--3、擴充套件過程

--藉助第三方工具做一個DLL然後在SQL SERVER中註冊成擴充套件過程,然後在函式裡直接呼叫。

--4openquery,openrowset

createfunction f_getsystemdate()

returns datetime

as

begin

declare @dt datetime

select@dt= dt

fromopenrowset

('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

end

go

--呼叫

select dbo.f_getsystemdate()

/*

-----------------------

2008-12-24 12:55:11.583

(1 行受影響)

*/

--刪除

dropfunction f_getsystemdate

--如果有linkserver還可以這樣:

FROMOPENQUERY('flystone','SELECT dt = GETDATE()')

--5openrowsetproc

use jhhis

go

createproc pr_getsystemdate

as

begin

selectgetdate()as dt

end

go

createfunction f_getsystemdate()

returns datetime

as

begin

declare @dt datetime

select@dt= dt

fromopenrowset

('SQLOLEDB','.';'sa ';'',

' exec jhhis.dbo.pr_getsystemdate ')

--from OPENROWSET

--('SQLOLEDB','SERVER=.;UID=sa;PWD=','select getdate() as dt')

return @dt

end

go

--呼叫

select dbo.f_getsystemdate()

/*

-----------------------

2008-12-24 13:05:06.250

(1 行受影響)

*/

--刪除

dropfunction f_getsystemdate

dropproc pr_getsystemdate

--說明:本blog參照了

http://sqlserver2000.databases.aspfaq.com/how-do-i-use-getdate-within-a-user-defined-function-udf.html

--大家可以去看看

相關推薦

2000定義函式呼叫不確定性系統函式

2000下自定義函式和不確定性內建系統函式 作者:hapyflystoneblog:http://blog.csdn.net/happyflytone 轉載請註明出處   我們經常在想自定義函式內呼叫一些不確定性的系統函式,可是天不作美系統會報錯,下面演示一下系統函式getdate(). --建

Python函式的基本定義呼叫以及函式

首先我們要了解Python函式的基本定義: 函式是什麼? 函式是可以實現一些特定功能的小方法或是小程式。在Python中有很多內建函式,當然隨著學習的深入,你也可以學會建立對自己有用的函式。簡單的理解下函式的概念,就是你編寫了一些語句,為了方便使用這些語句,把這些語句組合在一起,給它起一個名字。使用的時候只要

【Vue】通過定義指令回顧 v-指令

Vue.js 的各種指令(Directives)更加方便我們去資料驅動 DOM,例如 v-bind、v-on、v-model、v-if、v-for、v-once 等內建指令,這些指令的職責就是當表示式改變時將某些行為應用到 DOM 上,儘量不去操作增刪改 DOM。通過了解如何去自定義指

關於型別與定義型別呼叫new初始化問題

int *p1 = new int[10]; int *p2 = new int[10]();  p1僅僅是用new分配記憶體,並不會初始化 p2不僅分配記憶體,還會初始化為0 解釋: 對於內建型別,如int char系統自帶的呼叫new時,若沒有加()顯示呼叫它的建構函式

python在引用其他資料夾定義函式

專案層次結構類似於此,現在需要在stup.py檔案中引用A.py檔案中定義的函式 test, 可以採用: from Lib.A import test A.py內容: #-*- coding: UTF-8 -*- import sys reload(sys) sy

ASP.NET MVC定義錯誤頁和展示錯誤頁的幾種方式

提供服務 one url attribute 運行 16px execute 釋放 namespace 在網站運行中,錯誤是不可避免的,錯誤頁的產生也是不可缺少的。 這幾天看了博友的很多文章,自己想總結下我從中學到的和實際中配置的。 首先,需要知道產生錯誤頁的來源,一種

mac定義偽協議配置

xxx element https src internet -c pos tro six 之前查了很多資料,最近也在挖掘研究這方面的漏洞. windows的很簡單,在註冊表配置就好了,但是mac os 是unix的,沒有註冊表這麽一說。 但是發現騰訊等配置了自定義等協

Ubuntu定義調整CPU工作頻率(用於省電或提高性能都好用)

win -i 安裝 use nal spa cpufreq 調整 系統 昨天高鐵上拿T480切win10系統看電影,為了節電給細調了個省電策略(設置CPU性能30%),不知是不是因為這個原因,今天切回Ubuntu1604工作導致CPU工作頻率非常低。 查閱了一下相關方法,c

tomcat載入webapp定義web專案失敗的可能原因(最奇葩的那個)

上面半段純屬反省,原因在末尾 我遇到的問題如下: tomcat的正常訪問沒問題,但是我加到webapp資料夾下的web專案沒法執行,老是 not found 404 ,嘗試了無數次,我都放棄了一整天了,但是沒辦法啊,我看的教程必須用這個,所以第二天我爬起來繼續找問題,這天

微信公眾號在開發者模式定義選單

要知道公眾號開啟開發者模式後,公眾號自帶的功能就不能使用了。 那麼如何自定義選單呢? 此時,我們要通過介面來配置微信自定義選單,微信自定義選單介面連結 先檢視官方文件的自定義選單: 然後,我們開啟微信公眾平臺介面除錯工具 介面除錯工具 首先,通過appid以及secret來獲取acces

ASP.NET MVC 定義模型繫結,去除字串型別前後的空格

直接貼程式碼了: SkyModelBinder.cs using System.ComponentModel; using System.Linq; using System.Web.Mvc; namespace MvcSample.Extensions { public cl

百度地圖的覆蓋物定義(二)--資訊視窗的定義呼叫白茹提供的資訊視窗InfoWindow)

百度地圖的覆蓋物自定義(而)--資訊視窗的自定義(呼叫白茹提供的資訊視窗InfoWindow) var point=new BMap.Point(111.54525,45.578); setInfo

【Linux定義Shell終端提示符】

目錄 基本轉義符 字型顏色 背景顏色 移動游標 @ Linux系統終端提示符的特徵由系統環境變數 PS1(Prompt String One)定義。 我們可以通過命令echo $PS1來檢視當前設定,如下圖: 同樣,我們可以通過修改PS1的值來改變終端提示資訊: 但這只是臨時

CentOS7定義目錄安裝mono+jexus教程

一、閱讀前須知: 1.本文屬於安裝完Centos7之後的步驟 2.如果還不瞭解mono,請點選mono 3.本篇主要內容是使用自定義目錄安裝mono+jexus教程,使用預設目錄請檢視使用預設目錄安裝 二、安裝步驟 1.準備環境 yum -y install gcc gcc-c++ bison

golang在linux環境定義包(一招解決問題)

由於是go語言新手,有些簡單的問題處理起來有點困難。現在從go安裝到執行詳細地說起 關於go語言在linux環境下自定義包的問題困擾了我好大一會。 下面我就從前往後詳細地說一下解決方法,一招解決問題。 (I)linux下解決,從go安裝開始說起 命令安裝比直接在先下載golang

EditTextPreference 定義彈出Dialog並獲取

<?xml version="1.0" encoding="utf-8"?> <PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" android:title="

vue.js定義時間格式

一、使用自定義js的正則表示式 //頁面上呼叫過濾器(頁面上) {{date | formatDate}} //建立過濾器(new Vue()中) filters: {

Laravel5定義錯誤頁面的配置

♩ 背景 最近試著學習 laravel 5.5,使用 composer 下載新的框架原始碼 composer create-project --prefer-dist laravel/lar

React Native定義外掛,呼叫android原生程式碼

Hi,寶寶們,我又來了,16有你,17前行,18怎麼辦?18讓我們一起學習RN吧,hybrid現在是一個前沿,雖然官網說Learn once, write anywhere~~~ 僅需學習一次,編寫任何平臺。但是你不能指望它幹任何事啊,android原生的很多功能還是無法直接使用的,這個時

C# WPF定義滾動條ScrollViewer樣式

<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/20