`
javababy1
  • 浏览: 1224879 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

2000下自定义函数调用不确定性内置系统函数

阅读更多

2000下自定义函数和不确定性内置系统函数

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

转载请注明出处

  我们经常在想自定义函数内调用一些不确定性的系统函数,可是天不作美系统会报错,下面演示一下系统函数getdate().

--创建函数

create function f_getsystemdate()

returns datetime

as

begin

return getdate()

end

go

--调用

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

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

*/

--删除

drop function f_getsystemdate

--2、视图

create view v_currentsystemtime

as

select getdate() as dt

go

create function 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 行受影响)

*/

--删除

drop function f_getsystemdate

drop view v_currentsystemtime

--3、扩展过程

--借助第三方工具做一个DLL然后在SQL SERVER中注册成扩展过程,然后在函数里直接调用。

--4openquery,openrowset

create function f_getsystemdate( )

returns datetime

as

begin

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

end

go

--调用

select dbo.f_getsystemdate( )

/*

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

2008-12-24 12:55:11.583

(1 行受影响)

*/

--删除

drop function f_getsystemdate

--如果有linkserver还可以这样:

FROM OPENQUERY ( 'flystone','SELECT dt = GETDATE()')

--5openrowsetproc

use jhhis

go

create proc pr_getsystemdate

as

begin

select getdate() as dt

end

go

create function f_getsystemdate( )

returns datetime

as

begin

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

end

go

--调用

select dbo.f_getsystemdate( )

/*

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

2008-12-24 13:05:06.250

(1 行受影响)

*/

--删除

drop function f_getsystemdate

drop proc pr_getsystemdate

--说明:本blog参照了

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

--大家可以去看看

分享到:
评论

相关推荐

    在SQL2000中,自定义函数中使用getdate()

    在SQL Server 2000中,非确定性函数(例如`GETDATE()`)不能用于索引视图、计算列或者任何依赖于函数确定性的场景中。这是因为非确定性函数的返回值在每次查询时都可能不同,这使得数据库引擎难以优化执行计划。为了...

    excel自定义函数

    之后,我们可以在Excel工作表中像使用内置函数一样调用这个自定义函数。例如,`=MYSUM(A1:A5)`将返回A1到A5区域的总和。 自定义函数不仅限于数值计算,还可以处理字符串、日期等类型的数据,甚至可以与其他Excel...

    js调用浏览器打印模块实现点击按钮触发自定义函数

    在探讨如何利用JavaScript调用浏览器的打印模块实现点击按钮时触发自定义函数的过程中,我们首先需要了解浏览器提供的打印API以及如何通过编程方式触发打印任务。现代浏览器通常提供了window.print()方法,该方法...

    VBA_Excel自定义函数大全

    ### VBA_Excel自定义函数大全 #### 一、引言 在日常工作中,Microsoft Excel 是一款非常重要的工具,尤其对于需要处理大量数据的人来说更是如此。为了提高工作效率,利用VBA(Visual Basic for Applications)编写...

    excel中161个VBA_自定义函数(超级实用)

    以上所列的VBA自定义函数覆盖了Excel操作的各个方面,从基本的数据处理到复杂的财务计算和文本分析,每项功能都旨在提高工作效率和数据处理的准确性。通过理解和掌握这些函数,用户可以极大地扩展Excel的实用性,...

    C#公式编辑器支持自定义函数、阶乘求反、运算优先级

    总之,一个C#公式编辑器,特别是具备自定义函数、阶乘求反和运算优先级等功能的编辑器,不仅展示了C#语言的强大灵活性,还体现了软件工程中的设计原则和算法应用。这样的工具在教育、科学计算和数据分析等领域都有...

    excel自定义函数编写方法

    编写自定义函数需要用到宏(Macro)功能,因此首先需要确保已正确配置宏的安全性设置。 **步骤1:设置宏安全性** 1. 打开Excel,依次点击菜单栏中的“工具” > “宏” > “安全性”。 2. 在弹出的对话框中,将安全...

    SQL_Server_用户自定义函数.pdf

    用户自定义函数能够像系统内置函数那样在查询或存储过程中使用,同时也支持通过`EXECUTE`命令来执行。需要注意的是,用户自定义函数不适用于执行一系列会改变数据库状态的操作。 #### 二、用户自定义函数的分类 ...

    应用C语言编写ADAMS用户自定义函数的研究

    这种函数在许多工程计算场景下都非常有用,例如模拟噪声、振动或不确定性因素的影响。 具体实现时,开发者首先需要理解正态分布的数学原理,然后选择合适的算法(如Box-Muller变换)来生成随机数。在C语言中实现该...

    VB6开发EXCEL自定义函数加载宏

    通过创建动态链接库(DLL),我们可以编写VBA(Visual Basic for Applications)无法直接实现的复杂算法或特定业务逻辑,然后将这些功能作为Excel内置函数一样调用。 1. **创建DLL项目** - 打开VB6,选择“文件”-...

    关于WinCC自定义返回数组函数书写规则正确写法.rar

    - 模糊控制是一种基于模糊逻辑的控制策略,适用于非线性、不确定性的系统。在DLL中实现模糊控制算法,通常包括模糊化、推理和去模糊化三个步骤。 - 模糊控制的输入和输出变量可以定义为模糊集合,用隶属度函数表示...

    一种Android系统全局函数调用关系分析框架的设计与实现

    该框架旨在解决现有静态分析方法的局限性,通过分析Java层、C/C++层以及JNI(Java Native Interface)层的函数调用关系,以构建一个全面的调用图,从而帮助研究人员更好地理解和定位潜在的安全问题。 首先,对于...

    数据库应用基础用户自定义函数PPT学习教案.pptx

    内置函数是预定义的,不可修改,例如聚合函数(如SUM、AVG、MAX、MIN)和系统函数(如CASE、CAST、CONVERT等)。这些函数简化了对数据的操作,提供了对特定任务的快速解决方案。 4. **聚合函数**:这些函数用于对一...

    不同类之间函数调用实例

    在C#编程中,类与类之间的函数调用是实现对象间交互的重要方式。本示例探讨了三种主要的函数调用方式:子类调用父类函数、父类调用子类函数以及子类之间的函数调用。下面将详细阐述这些概念。 1. 子类调用父类函数...

    Oracle存储过程、自定义函数、动态建表存储过程等例子

    Oracle数据库系统是企业级数据管理的重要工具,其中存储过程、自定义函数以及动态建表存储过程是提升数据库性能和管理效率的关键技术。以下是对这些概念的详细解释。 1. **Oracle存储过程**: 存储过程是预编译的...

    sqrt对重载函数的调用不明确-的处理方法.txt.zip

    这个错误是由于类型推断的不确定性导致的。下面我们将深入探讨这个问题的原因、解决方法以及相关的C++语言特性。 首先,`std::sqrt`是C++标准库中的一个函数,位于`<cmath>`头文件中,用于计算平方根。它有多个重载...

    (杨辉三角)(C语言)(函数调用)

    ### 杨辉三角的实现与函数调用在C语言中...通过以上分析,我们可以看到,虽然给定的代码实现并不是最优的,但它提供了一个很好的学习函数调用和组合数学的机会。对于初学者来说,理解和实践这样的代码是非常有价值的。

    隶属函数在MATLAB中应用_隶属度函数_隶属函数matlab_隶属度_隶属函数在MATLAB中应用_

    总结,MATLAB中的隶属函数是模糊逻辑的关键工具,能够处理不确定性和不精确的数据。通过理解和掌握如何在MATLAB中编辑和应用隶属函数,可以解决许多实际问题,尤其是在需要处理模糊信息的领域。这份详尽的讲解将有助...

    Python函数与模块PPT课件.pptx

    匿名函数LAMBDA是Python语言中的一种特殊函数,它可以在不定义函数名的情况下定义一个函数。lambda函数的格式为:lambda [参数列表]:[函数体]。lambda函数通常用于简化代码,提高代码的可读性。 Python模块是...

    易语言不声明api函数直接动态调用api源码

    易语言的API动态调用机制允许程序员在运行时通过函数名和参数来调用API,而不需要在编译前声明API函数的详细信息。这种方法涉及到的知识点主要包括: 1. **动态内存管理**:API动态调用往往需要动态分配和释放内存...

Global site tag (gtag.js) - Google Analytics