在SQL Server中,我们通常会使用NEWID(),GETDATE(),等一些数据库函数,这些函数是很有帮助的,然后数据库也能够让我们自己写函数,即Function,下面简单说说Function的写法。

标量函数:结果为一个单一的值,可包含逻辑处理过程。其中不能用getdate()之类的不确定性系统函数.

CREATE FUNCTION <Scalar_Function_Name, sysname, FunctionName>
(
  -- 添加你的参数,及其数据类型
  @Parameter1 DataType,

  @Parameter2 DataType

)

-- 声明你返回值类型
RETURNS DataType
AS
BEGIN
  -- 声明你的返回参数

  DECLARE @ReturnValue DataType

  --可以调用你设定的参数进行逻辑运算

  SET @ReturnValue = @Parameter1 + @Parameter2

  -- Return 返回你想要返回的数
  RETURN @ReturnValue

END
GO

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

在这种标量函数中,无法使用INSERT语句,我甚至想用SELECT 来设定参数值都不行,具体原因没有查,但是报错信息是

:Select statements included within a function cannot return data to a client.

这个以后有时间去研究研究原理。

由于项目需要我通过数据库来执行INSERT 语句,Function没法满足我,转战存储过程。

由于接触不多,我并不是太了解存储过程和Function的区别于意义是什么,我只感觉到,存储过程也能设定参数,除了return只能返回INT类型比较操蛋,好像是比Function强。之后得好好研究........

CREATE PROCEDURE ProcedureName
  -- 添加输入参数(无需逗号分离),在数据类型后加上OUTPUT属性后,可以输出这个参数
  @Parameter1 DataType OUTPUT

  @Parameter2 DataType
AS
BEGIN
  -- SET NOCOUNT OFF/ON  ON表示执行的SQL不返回具体的影响行数,OFF则返回影响行数
  SET NOCOUNT OFF;

  --声明内部常量(需要逗号分离)

  Declare @Parameter3 DataType,

  Declare @Parameter4 DataType

  --给内部常量赋值(可以用select 语句 查询想要的值)

  SET @Parameter3 = select Value from Table

  --开始执行你想要执行的DML语句

  insert/update/delete

  --记得给你想要OUTPUT的参数赋值(可以使用SQL Server 自带的函数去计算一些东西)

  SET @Parameter2 = select.......
END
GO

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

该存储过程设定了我想要的参数,那么我执行该存储过程,要添加参数值,就可以这样做

Declare @Value

exec ProcedureName @Parameter1, @Value OUTPUT

Print @Value

当执行完以上语句时,你就看到你想要的OUTPUT值。

其中目的已经达到,但是有些原理还没有彻底了解,这些需要我花时间查找更多资料,此例仅供大致写出功能模块,要想彻底掌握,还需要了解更多的SQL知识。

带参数的存储过程和标量Function的更多相关文章

  1. c#调用Mysql带参数的存储过程

    1.首先创建一个带参数的存储过程 ①存储过程名称=proc_bookinfo  ②存储过程2个参数 一个in 一个out in参数名称=ispay out参数名称=unPaycount ③ 这个存储过 ...

  2. Sql Server 带参数的存储过程执行方法

    Sql Server 带参数的存储过程执行方法 Visual C# 动态操作 SQL Server 数据库实例教程(4):带参数的存储过程执行方法 上一篇文章介绍了带参数的SQL语句执行方法和不带参数 ...

  3. [转]SSIS OLE DB Source中执行带参数的存储过程

    本文转自:http://www.cnblogs.com/michaelxu/archive/2009/10/21/1587450.html 问题描述:执行一个存储过程得到一个多条记录的结果集,然后循环 ...

  4. oracle存储过程(带参数的存储过程)

    带参数的存储过程 举例:为指定的员工涨100元的工资,打印涨前和涨后的工资 如果带参,需要指定是输入参数还是输出参数 create or replace procedure raisesalary(e ...

  5. oracle无参数和带参数的存储过程实例

    SQL中调用存储过程语句:call procedure_name(); 注:调用时”()”是不可少的,无论是有参数还是无参数. 定义对数据库存储过程的调用时1.无参数存储过程:{call proced ...

  6. 在C#中怎么调用带参数的存储过程啊??

    1)执行一个没有参数的存储过程的代码如下:SqlConnection conn=new SqlConnection(“connectionString”);SqlDataAdapter da = ne ...

  7. 20150825 C# 调用带参数的存储过程 模板

    ////// exec proceudre2                        //System.Data.SqlClient.SqlConnection sqlcon = new Sys ...

  8. ado.net 调用带参数的存储过程

    String connString = "Data Source = localhost; Initial Catalog = hkjc;User ID = sa;Pwd = 123&quo ...

  9. 在Java中调用带参数的存储过程

    JDBC调用存储过程: CallableStatement 在Java里面调用存储过程,写法那是相当的固定: Class.forName(.... Connection conn = DriverMa ...

随机推荐

  1. ThinkPHP实现导出

    刚开始做项目的时候,遇到了这个需求.说实话,对于一个才出来实习的菜鸟,而且还是才接触PHP的菜鸟而言,实在是有心杀敌,无力回天啊. 最简单的方法,就是网上找一个插件,然后一个本来就十几兆的项目,又增加 ...

  2. C#学习日志 day 4 ------ 类相关---this指针以及相关关键字

    c#中的类和java中的类没什么太大区别.但是c#有些特有的关键字以及属性使得c#具有一些特性. 首先就是this关键字,this在c++和java中都有,可以表示当前对象,以及变量所属对象等.例如 ...

  3. IOS 特定于设备的开发:使用加速器启动屏幕上的对象

    借助一点编程工作,iPhone的机载加速计就可以使对象在屏幕上四处“移动”,实时响应用户倾斜手机的方式.下面的代码就是创建一个动画式的蝴蝶,用户可以使之快速移过屏幕. 使之工作的秘密在于:向程序中添加 ...

  4. file_get_contents 超时设置

    <?php $ctx = stream_context_create( array( 'http' => array( 'timeout' => 1 //设置一个超时时间,单位为秒 ...

  5. UVA1291----Dance Dance Revolution----3维DP

    本文出自:http://blog.csdn.net/dr5459 题目地址: http://uva.onlinejudge.org/index.php?option=com_onlinejudge&a ...

  6. swig模板 html代码自然状态下输出是转义的,必须加一个函数来转换为html代码;

    <div>{{o.content|raw}}</div> |raw 相当于一个函数,转义函数,最终输出结果为html代码:

  7. tp中phpexcel导出实例

    public function phpexcel(){ //测试$this->display("User:xx");//跨模块分配页面User模块xx.html // xx\ ...

  8. c#打印记忆功能

    下面这些实例都可以拷下直接用 总体思路:保存打印设置信息到本地文件,下次打印的时候直接读取文件信息,通过序列化与反序列化来获取值.本例只是针对打印的横纵向进行设置,读者也可以增加其他设置信息进行保存读 ...

  9. setImageResource与setImageBitmap的区别

    同样的布局文件,小分辨率手机: 1.使用setImageBitmap设置时,出现如下现象:  2.使用setImageResource时,图片显示正常 原因: setImageResource(id) ...

  10. asp.net中实现MD5加密、解密的方法

    这个MD5加密.解密的方法会使用即可. 使用时的代码备忘:Response.Write(FormsAuthentication.HashPasswordForStoringInConfigFile(& ...