带参数的存储过程和标量Function
在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的更多相关文章
- c#调用Mysql带参数的存储过程
1.首先创建一个带参数的存储过程 ①存储过程名称=proc_bookinfo ②存储过程2个参数 一个in 一个out in参数名称=ispay out参数名称=unPaycount ③ 这个存储过 ...
- Sql Server 带参数的存储过程执行方法
Sql Server 带参数的存储过程执行方法 Visual C# 动态操作 SQL Server 数据库实例教程(4):带参数的存储过程执行方法 上一篇文章介绍了带参数的SQL语句执行方法和不带参数 ...
- [转]SSIS OLE DB Source中执行带参数的存储过程
本文转自:http://www.cnblogs.com/michaelxu/archive/2009/10/21/1587450.html 问题描述:执行一个存储过程得到一个多条记录的结果集,然后循环 ...
- oracle存储过程(带参数的存储过程)
带参数的存储过程 举例:为指定的员工涨100元的工资,打印涨前和涨后的工资 如果带参,需要指定是输入参数还是输出参数 create or replace procedure raisesalary(e ...
- oracle无参数和带参数的存储过程实例
SQL中调用存储过程语句:call procedure_name(); 注:调用时”()”是不可少的,无论是有参数还是无参数. 定义对数据库存储过程的调用时1.无参数存储过程:{call proced ...
- 在C#中怎么调用带参数的存储过程啊??
1)执行一个没有参数的存储过程的代码如下:SqlConnection conn=new SqlConnection(“connectionString”);SqlDataAdapter da = ne ...
- 20150825 C# 调用带参数的存储过程 模板
////// exec proceudre2 //System.Data.SqlClient.SqlConnection sqlcon = new Sys ...
- ado.net 调用带参数的存储过程
String connString = "Data Source = localhost; Initial Catalog = hkjc;User ID = sa;Pwd = 123&quo ...
- 在Java中调用带参数的存储过程
JDBC调用存储过程: CallableStatement 在Java里面调用存储过程,写法那是相当的固定: Class.forName(.... Connection conn = DriverMa ...
随机推荐
- Exception和RuntimeException
public class RuntimeExceptionDemo01 { public static void main(String[] args) { String string=&qu ...
- return和break的区别
/* Name:return和break的区别 Copyright: By.不懂网络 Author: Yangbin Date:2014年2月25日 02:13:22 Description:以下代码 ...
- semver语义化版本号
semver语义化版本号 语义化版本号各位置的含义 版本号:X.Y.Z X: 代表发生了不兼容的API改变 Y: 代表向后兼容的功能性变化 Z: 代表向后兼容bug fixes 语义化版本号示例 1. ...
- QTreeView处理大量数据(使用1000万条数据,每次都只是部分刷新)
如何使QTreeView快速显示1000万条数据,并且内存占用量少呢?这个问题困扰我很久,在网上找了好多相关资料,都没有找到合理的解决方案,今天在这里把我的解决方案提供给朋友们,供大家相互学习. 我开 ...
- 微软提供的虚拟磁盘API
https://msdn.microsoft.com/en-us/library/windows/desktop/dd323684(v=vs.85).aspx https://msdn.microso ...
- HDU 5773 The All-purpose Zero(树状数组)
[题目链接] http://acm.hdu.edu.cn/showproblem.php?pid=5773 [题目大意] 给出一个非负整数序列,其中的0可以替换成任意整数,问替换后的最长严格上升序列长 ...
- 百度统计和CNZZ到底有哪些不同?
作为互联网门外汉,同时作为不专业的站长,我总是有很多问题想知道,比如百度统计和CNZZ在数据统计上总是有差异,就好像王婆卖瓜,自卖自夸,又好像公说公有理,婆说婆有理. 作为专业的不专业的市场人员,好奇 ...
- Java图形化界面设计——布局管理器之GridLayout(网格布局)
网格布局特点: l 使容器中的各组件呈M行×N列的网格状分布. l 网格每列宽度相同,等于容器的宽度除以网格的列数. l 网格每行高度相同,等于容器的高度除以网格的行数. l 各组件的排列方式 ...
- 2.一步一步学c#(二):核心c#
简单的控制台应用程序. 代码(它有把某条消息写到屏幕上的一个类组成) 编译并运行程序得到结果: 在上面的代码示例中,前几行代码与名称空间有关,名称空间是把相关类组合在一起的方式.namespace关键 ...
- iOS 相互引用引起内存泄露问题说明
release动作只会对自身计数减一,而不会对属性发出release消息,只有该对象的引用计数为0,系统才会对该对象的所有属性发出release消息 类A的属性有类B,类B的属性有类A,而且两者都是强 ...