存储过程

存储过程,函数--参数默认值的一些问题

你离开我真会死。 提交于 2020-01-13 22:00:26
http://topic.csdn.net/u/20100710/10/b3fbaef9-af39-454a-9c34-b48d207532a8.html -- 先看几个过程的执行 -- 先创建我们一般的写法 CREATE PROC P( @S VARCHAR ( 1 ) = ' A ' ) AS SELECT @S GO EXEC P GO -- 1 ALTER PROC P ( @S DECIMAL = A) AS SELECT @S GO EXEC P GO /* 服务器: 消息 8114,级别 16,状态 5,过程 P,行 0 将数据类型 nvarchar 转换为 numeric 时出错。 */ -- 2 ALTER PROC P ( @S VARCHAR ( 1 ) = 中) AS SELECT @S GO EXEC P GO /* ---- (所影响的行数为 1 行) */ -- 4 ALTER PROC P ( @S NVARCHAR ( 1 ) = 中) AS SELECT @S GO EXEC P GO /* ---- 中 (所影响的行数为 1 行) */ -- 数据类型优先级 http://msdn.microsoft.com/zh-cn/library/ms190309(SQL.90).aspx -- 1参数默认值传递 有些 字符类型可以不用加''来限定, -

C# 连接SQL数据库及操作数据库

落花浮王杯 提交于 2020-01-13 19:01:45
1、概述 ado.net提供了丰富的数据库操作,这些操作可以分为三个步骤: 第一,使用SqlConnection对象连接数据库; 第二,建立SqlCommand对象,负责SQL语句的执行和存储过程的调用; 第三,对SQL或存储过程执行后返回的“结果”进行操作。 对返回“结果”的操作可以分为两类: 一是用SqlDataReader直接一行一行的读取数据集; 二是DataSet联合SqlDataAdapter来操作数据库。 两者比较: SqlDataReader时刻与远程数据库服务器保持连接,将远程的数据通过“流”的形式单向传输给客户端,它是“只读”的。由于是直接访问数据库,所以效率较高,但使用起来不方便。 DataSet一次性从数据源获取数据到本地,并在本地建立一个微型数据库(包含表、行、列、规则、表之间的关系等),期间可以断开与服务器的连接,使用SqlDataAdapter对象操作“本地微型数据库”,结束后通过SqlDataAdapter一次性更新到远程数据库服务器。这种方式使用起来更方,便简单。但性能较第一种稍微差一点。(在一般的情况下两者的性能可以忽略不计。) 一张十分出名的ADO.NET结构图: 2、连接字符串的写法 string connectString = "Data Source=.;Initial Catalog=Student;Integrated

t_sql

删除回忆录丶 提交于 2020-01-13 14:31:07
利用SQL SERVER的系统函数 object_id() 可以判断是否存在表、临时表, object_id() 的作用是返回架构范围内对象的数据库对象标识。(即返回系统视图 sys.objects 的 object_id 字段值) 语法: OBJECT_ID ( '[ database_name . [ schema_name ] . | schema_name . ] object_name' [ ,'object_type' ] ) 返回值是 int 类型,如果对象不存在则返回 null 。 t_sql 判断是否存在表 if object_id(N'dbo.Info_City',N'U') is not null print '存在表' else print '不存在表' 判断是否存在临时表 if object_id(N'tempdb.dbo.#TEMP2',N'U') is not null print '存在#TEMP2' else print '不存在#TEMP2' 注意:判断临时表需要指定临时数据库 tempdb 判断其他架构范围内的对象 因为函数object_id() 返回的是 架构范围内对象 的数据库对象标识,意味着例如表、视图、约束、存储过程等其他 架构范围内对象 也可以通过上述方法判断其存在性。 例如,判断存储过程仅需稍稍修改对象名和对象类型即可: if

jdbc调用 oracle 存储过程操作

若如初见. 提交于 2020-01-13 10:10:31
创建有参存储函数findEmpNameAndSal(编号),查询7902号员工的的姓名和月薪,【返回多个值,演示out的用法】 当返回2个或多个值,必须使用out符号 当返回1个值,就无需out符号 create or replace function findEmpNameAndSal (pempno in number,pename out varchar2) return number as psal emp.sal%type; begin select ename,sal into pename,psal from emp where empno=pempno; --返回月薪 return psal; end; / ---------------------------------------相互转值 以下为测试调用 declare psal emp.sal%type; pename emp.ename%type; begin psal := findEmpNameAndSal(7902,pename); dbms_output.put_line('7902号员工的姓名'||pename||',薪水是'||psal); end; / 存储过程 创建有参存储过程findEmpNameAndSalAndJob(编号),查询7902号员工的的姓名,职位,月薪【演示out的用法】

sql server创建存储过程

对着背影说爱祢 提交于 2020-01-13 00:09:58
use TestDB go if object_ID('GetStrdent','P') is not null--如果存在这个存储过程,则删除 Drop Procedure GetStrdent go create procedure GetStudent--创建存储过程 @SNO int,--参数 @SName varchar(20)--参数 AS select SNO,SName from strdent where SNO like @SNO and SName like @SName go 来源: https://www.cnblogs.com/zhujie-com/p/12185329.html

存储过程查询遍历行数据并判断计算处理

戏子无情 提交于 2020-01-12 04:06:27
存储过程查询遍历行数据并判断计算处理,业务处理可忽略,主要运用 declare cursor…… open all_data…… loop fetch all_data into row_data…… 创建定义游标以及循环逐行取数等方式。 CREATE OR REPLACE PROCEDURE P_GET_TASKNUM(V_GROUPID in VARCHAR2, --V_GROUPTYPE in VARCHAR2, V_PROCESSID in VARCHAR2, V_TASKGROUPID in VARCHAR2, V_ALLTASKNUM out INTEGER, --所有的任务 V_VALTASKNUM out INTEGER, --开启的任务 V_RUNTASKNUM out INTEGER, --持续调度中的任务 V_ERRTASKNUM out INTEGER, --错误任务 V_OVTTASKNUM out INTEGER --超时任务 ) AS --该存储过程只返回具体任务数数据 不反回查询的游标 V_TEMP INTEGER := 0; V_TEMP2 INTEGER := 0; V_TEMP3 INTEGER := 0; V_TEMP4 VARCHAR2(20) := ''; begin select count(1) INTO V_TEMP from

MySQL基础知识点大全

守給你的承諾、 提交于 2020-01-11 20:24:35
一、为什么要学习数据库 二、数据库的相关概念 DBMS、DB、SQL 三、数据库存储数据的特点 四、初始MySQL MySQL产品的介绍 MySQL产品的安装 ★ MySQL服务的启动和停止 ★ MySQL服务的登录和退出 ★ MySQL的常见命令和语法规范 五、DQL语言的学习 ★ 基础查询 ★ 条件查询 ★ 排序查询 ★ 常见函数 ★ 分组函数 ★ 分组查询 ★ 连接查询 ★ 子查询 √ 分页查询 ★ union联合查询 √ 六、DML语言的学习 ★ 插入语句 修改语句 删除语句 七、DDL语言的学习 库和表的管理 √ 常见数据类型介绍 √ 常见约束 √ 八、TCL语言的学习 事务和事务处理 九、视图的讲解 √ 十、变量 十一、存储过程和函数 十二、流程控制结构 数据库的好处 1.持久化数据到本地 2.可以实现结构化查询,方便管理 数据库相关概念 1、DB:数据库,保存一组有组织的数据的容器 2、DBMS:数据库管理系统,又称为数据库软件(产品),用于管理DB中的数据 3、SQL:结构化查询语言,用于和DBMS通信的语言 数据库存储数据的特点 1、将数据放到表中,表再放到库中 2、一个数据库中可以有多个表,每个表都有一个的名字,用来标识自己。表名具有唯一性。 3、表具有一些特性,这些特性定义了数据在表中如何存储,类似java中 “类”的设计。 4、表由列组成,我们也称为字段

SQL Server 存储过程

柔情痞子 提交于 2020-01-11 15:23:37
Transact-SQL中的存储过程,非常类似于Java语言中的方法,它可以重复调用。当存储过程执行一次后,可以将语句缓存中,这样下次执行的时候直接使用缓存中的语句。这样就可以提高存储过程的性能。 Ø 存储过程的概念 存储过程Procedure是一组为了完成特定功能的SQL语句集合,经编译后存储在数据库中,用户通过指定存储过程的名称并给出参数来执行。 存储过程中可以包含逻辑控制语句和数据操纵语句,它可以接受参数、输出参数、返回单个或多个结果集以及返回值。 由于存储过程在创建时即在数据库服务器上进行了编译并存储在数据库中,所以存储过程运行要比单个的SQL语句块要快。同时由于在调用时只需用提供存储过程名和必要的参数信息,所以在一定程度上也可以减少网络流量、简单网络负担。 1、 存储过程的优点 A、 存储过程允许标准组件式编程 存储过程创建后可以在程序中被多次调用执行,而不必重新编写该存储过程的SQL语句。而且数据库专业人员可以随时对存储过程进行修改,但对应用程序源代码却毫无影响,从而极大的提高了程序的可移植性。 B、 存储过程能够实现较快的执行速度 如果某一操作包含大量的T-SQL语句代码,分别被多次执行,那么存储过程要比批处理的执行速度快得多。因为存储过程是预编译的,在首次运行一个存储过程 时,查询优化器对其进行分析、优化,并给出最终被存在系统表中的存储计划。而批处理的T

程序包+创建包规范+创建包体+删除程序包

元气小坏坏 提交于 2020-01-11 09:55:55
程序包 1作用是为了实程序模块化 2程序包里面可以包含存储过程,函数,变量,游标等PL/SQL程序 3程序包类似java的jar包,存储过程,函数,变量,游标等相当jar包提供的方法 4调用程序包里面的存储过程,函数等元素时,oracle会把程序包调入内存,下次是使用,直接从内存读取。 5程序包组成 1)包规范:列出程序包可用的存储过程,函数,游标等元素条目(不含实际代码),这些元素条目属于公有项目,可以供所有数据库用户访问 2)包体:包含元素的实际代码,同时也可以在包体中创建包规范中没有提到的项目, 那么这些项目属于私有项目,只能在包体中使用. 创建包规范 语法 create 【or replace】package package_name {is | as } package_specification; end package_name; package_name:包名 package_specification:列出用户可以使用的公有项目(存储过程,函数,类型和对象) 举例 create or replace package tool_package as function sum_function(a in number default 0,b in number default 0) return number; procedure update_student2(no

用Dapper调用存储过程

荒凉一梦 提交于 2020-01-11 09:27:27
public PageModel Get(int PageIndex = 1, int PageSize = 5, int Pid = 0, int Tid = 0, int Gid = 0) { DynamicParameters sp = new DynamicParameters(); sp.Add("@PageIndex", PageIndex); sp.Add("@PageSize", PageSize); sp.Add("@Pid", Pid); sp.Add("@Tid", Tid); sp.Add("@TotalCount", dbType: DbType.Int32, direction: ParameterDirection.Output); PageModel model = new PageModel() { data = conn.Query<GoodsModel>("G_Page", sp, commandType: CommandType.StoredProcedure).ToList(), TotalCount = sp.Get<int>("@TotalCount") }; if (Gid!=0) { model.data= model.data.Where(s=>s.Gid==Gid).ToList(); } return model; } 来源: