在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. hdu 4628 Pieces 状压dp

    题目链接 枚举所有状态, 1表示这个字符还在原来的串中, 0表示已经取出来了. 代码中j = (j+1)|i的用处是枚举所有包含i状态的状态. #include <iostream> #i ...

  2. printf与scanf的返回值、注意点

    printf()的返回值为其输出字符串常量的字符数(注意字符数与字数的区别)注意计数针对所有的打印字符,包括空格和不可见的换行字符(不包括字符串的空字符). scanf()函数返回成功读入的项目的个数 ...

  3. mybatis之动态SQL

    <if>的使用 如果第一个if不成立的话可能会出现where and的语法错误,解决方法是在外层加<where>标签,此时如果以and和or衔接where的话会被删除. < ...

  4. vcredist作用

    一.vcredist作用: vcredist_x86.exe是微软公司Visual C++的32位运行时库,包含了一些Visual C++的库函数. vcredist_x64.exe是微软公司Visu ...

  5. Win7下超级管理员创建普通权限任务

    已转至新的博客 http://www.raysoftware点击打开链接.cn/?p=49 项目中用到一个功能,Win7下超级管理员创建普通权限任务. 试了几种办法,例如获取资源管理器的Token,然 ...

  6. Juicy Couture_百度百科

    Juicy Couture_百度百科 Juicy Couture

  7. tocken和ticket的数据模型;

    /* jshint -W079 */ /* jshint -W020 */ "use strict"; var _ = require("lodash"); m ...

  8. Mysql文件太大导入失败解决办法总结

    Mysql文件太大导入失败解决办法总结 在使用phpmyadmin导入数据库的时候可能会碰到由于数据库文件太大而无法导入的问题! 英文提示如下:File exceeds the maximum all ...

  9. iOS 按钮倒计时功能

    iOS 按钮倒计时功能, 建议把按钮换成label,这样会避免读秒时闪烁 __block ; __block UIButton *verifybutton = _GetverificationBtn; ...

  10. ubuntu apache fastcgi 虚拟主机安装

    1 cp /etc/apache2/sites-available/default /etc/apache2/sites-available/www.domain.com 这里www.domain.c ...