搜档网
当前位置:搜档网 › Java调用SQLServer存储过程分析

Java调用SQLServer存储过程分析

Java调用SQLServer存储过程分析
Java调用SQLServer存储过程分析

Java调用SQL Server存储过程

Java调用SQL Server的存储过程详解,主要内容:

●使用不带参数的存储过程

●使用带有输入参数的存储过程

●使用带有输出参数的存储过程

●使用带有返回状态的存储过程

●使用带有更新计数的存储过程

1.使用不带参数的存储过程

使用JDBC 驱动程序调用不带参数的存储过程时,必须使用call SQL 转义序列。不带参数的call 转义序列的语法如下所示:

实例:在SQL Server 2005 AdventureWorks示例数据库中创建以下存储过程:

此存储过程返回单个结果集,其中包含一列数据(由Person.Contact 表中前十个联系人的称呼、名称和姓氏组成)。

在下面的实例中,将向函数传递AdventureWorks示例数据库的打开连接,然后使用executeQuery方法调用GetContactFormalNames存储过程。

2.使用带有输入参数的存储过程

使用JDBC 驱动程序调用带参数的存储过程时,必须结合SQLServerConnection 类的prepareCall方法使用call SQL转义序列。带有IN参数的call转义序列的语法如下所示:

构造call转义序列时,请使用?(问号)字符来指定IN参数。此字符充当要传递给该存储过程的参数值的占位符。可以使用SQLServerPreparedStatement类的setter方法之一为参数指定值。可使用的setter方法由IN参数的数据类型决定。

向setter方法传递值时,不仅需要指定要在参数中使用的实际值,还必须指定参数在存储过程中的序数位置。例如,如果存储过程包含单个IN参数,则其序数值为1。如果存储过程包含两个参数,则第一个序数值为1,第二个序数值为2。

作为调用包含IN参数的存储过程的实例,使用SQL Server 2005 AdventureWorks示例数据库中的uspGetEmployeeManagers存储过程。此存储过程接受名为EmployeeID的单个输入参数(它是一个整数值),然后基于指定的EmployeeID返回雇员及其经理的递归列表。下面是调用此存储过程的Java代码:

3.使用带有输出参数的存储过程

使用JDBC 驱动程序调用此类存储过程时,必须结合SQLServerConnection类的prepareCall方法使用call SQL转义序列。带有OUT参数的call转义序列的语法如下所示:

构造call转义序列时,请使用?(问号)字符来指定OUT参数。此字符充当要从该存储过程返回的参数值的占位符。要为OUT参数指定值,必须在运行存储过程前使用SQLServerCallableStatement类的registerOutParameter方法指定各参数的数据类型。

使用registerOutParameter方法为OUT参数指定的值必须是java.sql.Types所包含的JDBC数据类型之一,而它又被映射成本地SQL Server数据类型之一。

当您对于OUT参数向registerOutParameter方法传递一个值时,不仅必须指定要用于此参数的数据类型,而且必须在存储过程中指定此参数的序号位置或此参数的名称。例如,如果存储过程包含单个OUT参数,则其序数值为1;如果存储过程包含两个参数,则第一个序数值为1,第二个序数值为2。

作为实例,在SQL Server 2005 AdventureWorks示例数据库中创建以下存储过程:根据指定的整数IN参数(employeeID),该存储过程也返回单个整数OUT参数(managerID)。根据HumanResources.Employee表中包含的EmployeeID,OUT参数中返回的值为ManagerID。

在下面的实例中,将向函数传递AdventureWorks 示例数据库的打开连接,然后使用

execute方法调用GetImmediateManager存储过程:

本示例使用序号位置来标识参数。或者,也可以使用参数的名称(而非其序号位置)来标识此参数。下面的代码示例修改了上一个示例,以说明如何在Java应用程序中使用命名参数。请注意,这些参数名称对应于存储过程的定义中的参数名称:

存储过程可能返回更新计数和多个结果集。Microsoft SQL Server 2005 JDBC Driver遵循JDBC 3.0规范,此规范规定在检索OUT参数之前应检索多个结果集和更新计数。也就是说,应用程序应先检索所有ResultSet对象和更新计数,然后使用CallableStatement.getter 方法检索OUT参数。否则,当检索OUT参数时,尚未检索的ResultSet对象和更新计数将丢失。

4.使用带有返回状态的存储过程

使用JDBC 驱动程序调用这种存储过程时,必须结合SQLServerConnection类的prepareCall方法使用call SQL转义序列。返回状态参数的call转义序列的语法如下所示:

构造call转义序列时,请使用?(问号)字符来指定返回状态参数。此字符充当要从该存储过程返回的参数值的占位符。要为返回状态参数指定值,必须在执行存储过程前使用SQLServerCallableStatement类的registerOutParameter方法指定参数的数据类型。

此外,向registerOutParameter方法传递返回状态参数值时,不仅需要指定要使用的参数的数据类型,还必须指定参数在存储过程中的序数位置。对于返回状态参数,其序数位置始终为1,这是因为它始终是调用存储过程时的第一个参数。尽管SQLServerCallableStatement类支持使用参数的名称来指示特定参数,但您只能对返回状态参数使用参数的序号位置编号。

作为实例,在SQL Server 2005 AdventureWorks示例数据库中创建以下存储过程:

该存储过程返回状态值1或0,这取决于是否能在表Person.Address中找到cityName 参数指定的城市。

在下面的实例中,将向此函数传递AdventureWorks示例数据库的打开连接,然后使用execute方法调用CheckContactCity存储过程:

5.使用带有更新计数的存储过程

使用SQLServerCallableStatement类构建对存储过程的调用之后,可以使用execute 或executeUpdate方法中的任意一个来调用此存储过程。executeUpdate方法将返回一个int 值,该值包含受此存储过程影响的行数,但execute方法不返回此值。如果使用execute方法,并且希望获得受影响的行数计数,则可以在运行存储过程后调用getUpdateCount方法。

作为实例,在SQL Server 2005 AdventureWorks示例数据库中创建以下表和存储过程:

在下面的实例中,将向此函数传递AdventureWorks示例数据库的打开连接,并使用execute方法调用UpdateTestTable存储过程,然后使用getUpdateCount方法返回受存储过程影响的行计数。

JAVA调用

ORACLE存储过程、函数的返回结果集

1.准备

用SYSTEM或者SYS用户登陆到oralce中,建立ZZH_TEST用户,该用户的密码为ZZH_TEST。

用ZZH_TEST用户进入到PL/SQL Develope中,以下表、存储过程、函数均建立在ZZH_TEST用户中。

2.建立一张测试表

建立表:

向表插入数据:

3.建立一个返回游标

4.创建一个测试用的存储过程

5.创建一个测试用的函数

6.JAVA调用存储过程返回结果集的例子:

JDBCoracle10G_INVOKEPROCEDURE

7.JAVA调用函数返回结果集的例子:

JDBCoracle10G_INVOKEFUNCTION

MySql 数据库用java程序创建表以及存储过程

MySql 数据库用java程序创建表以及存储过程 1.同一般的数据库操作基本一样。 2.Statement.executeUpdate(String sql); 这个方法可以用来执行DDL语句,以及执行更新操作。 3.需要注意 CallableStatement 接口的用法。 用于执行 SQL 存储过程的接口。JDBC API 提供了一个存储过程 SQL 转义语法,该语法允许对所有 RDBMS 使用标准方式调用存储过程。此转义语法有一个包含结果参数的形式和一个不包含结果参数的形式。如果使用结果参数,则必须将其注册为 OUT 型参数。其他参数可用于输入、输出或同时用于二者。参数是根据编号按顺序引用的,第一个参数的编号是 1。 {?= call [,, ...]} {call [,, ...]} IN 参数值是使用从 PreparedStatement 中继承的 set 方法设置的。在执行存储过程之前,必须注册所有 OUT 参数的类型;它们的值是在执行后通过此类提供的 get 方法检索的。 4.需要注意存储过程调用的方法。 5.registerOutParameter 的使用方法。 void registerOutParameter(int parameterIndex, int sqlType) throws SQLException 按顺序位置 parameterIndex 将 OUT 参数注册为 JDBC 类型 sqlType。所有 OUT 参数都必须在执行存储过程前注册。由 sqlType 指定的 OUT 参数的JDBC 类型确定必须用于 get 方法来读取该参数值的 Java 类型。如果预期返回给此输出参数的 JDBC 类型是取决于此特定数据库的,则 sqlType 应该是java.sql.Types.OTHER。 方法 getObject(int) 检索该值。 参数: parameterIndex - 第一个参数是 1,第二个参数是 2,依此类推。 sqlType - java.sql.Types 定义的 JDBC 类型代码。如果参数是 JDBC 类型NUMERIC 或 DECIMAL,则应使用接受标度值的那种。 下面是一个具体的程序实例: /* * To change this template, choose Tools | Templates * and open the template in the editor. */ package gui.database;

存储过程的典型例子

可能有不少朋友使用SQL SERVER做开发也已经有段日子,但还没有或者很少在项目中使用存储过程,或许有些朋友认为根本没有必要使用存储过程等等。其实当你一个项目做完到了维护阶段时,就会发现存储过程给我们带来了好处了,修改方便,不能去改我们的应用程序,只需要改存储过程的内容,而且还可以使我们的程序速度得到提高。 QUOTE: SQL SERVER 联机丛书中的定义: 存储过程是保存起来的可以接受和返回用户提供的参数的 Transact-SQL 语句的集合。 可以创建一个过程供永久使用,或在一个会话中临时使用(局部临时过程),或在所有会话中临时使用(全局临时过程)。 也可以创建在 Microsoft SQL Server 启动时自动运行的存储过程。 要使用存储过程,首先我们必需熟悉一些基本的T-SQL语句,因为存储过程是由于一组T-SQL语句构成的,并且,我们需要了解一些关于函数、过程的概念,因为我们需要在应用程序中调用存储过程,就像我们调用应用程序的函数一样,不过调用的方法有些不同。 下面我们来看一下存储过程的建立和使用方法。 一、创建存储过程 和数据表一样,在使用之前我们需要创建存储过程,它的简明语法是: QUOTE: CREATE PROC 存储过程名称 [参数列表(多个以“,”分隔)] AS SQL 语句 例: QUOTE: CREATE PROC upGetUserName @intUserId INT, @ostrUserName NVARCHAR(20) OUTPUT -- 要输出的参数 AS BEGIN -- 将uName的值赋给 @ostrUserName 变量,即要输出的参数 SELECT @ostrUserName=uName FROM uUser WHERE uId=@intUserId END 其中 CREATE PROC 语句(完整语句为CREATE PROCEDURE)的意思就是告诉SQL SERVER,

微博传播的特征和规律分析

微博传播的特征和规律分析 摘要:自2006年Twitter诞生以来,微博在全世界迅速蔓延发展。中国也逐渐形成了一批出色的微博网站,如新浪、腾讯、网易等。至此,人们进入了一个微博时代,网络舆论传播也因此进入了微博时代。作为一种新兴的“自媒体”传播形式,微博不仅带给我们一种全新的媒介体验,在公共舆论方面也彰显出越来越重要的作用。《2010年中国互联网舆情分析报告》指出,微博在网民社会生活的各个层面已成为重要的信息发布载体,随着影响力的扩大,正逐渐改变网络舆论载体格局。 关键词: 正文:微博即微型博客(即时博客),是web2.0时代新兴起的一种集成化、开放化的互联网社交服务。它打通了移动通信网和互联网的界限,让用户通过手机、IM软件(MSN、QQ、skype、gtalk)和外部API接口等途径,即时向外发布140字以内的文本。 2011年3月2日,新浪公布的2010年度未经审计的财务报告中称:“新浪微博用户基础在2010年扩大了25倍多,现在微博的注册用户总数已超过1亿。”根据相关统计数据,目前国内的互联网用户已经超过4亿,按这个数字计算,全国约至少有20%的互联网用户在使用新浪微博。 微博的传播特性 1.操作简易,收发方式多样 微博注册简单,网民只需填写电子邮件地址,设置登陆密码即可成为微博用户。在使用过程中,微博实行低门槛制:寥寥数语、发发感慨、情绪宣泄、灵感突现即使没有受过严格中文训练的人,只要会发短信,用户就可以将自己的所思所想以只言片语的形式发送到个人微博上。简单的记录方式降低了对用户的文字功底要求,也节约了时间成本,契合了现代社会快节奏的生活方式。 2.原创性强,叙事风格独特 微博的简易操作和低门槛进入制,吸引了众多的草根民众。简易的信息操作机制和随性的记录方式,催生了用户的个人表达欲。个体化、私语话的叙事风格在微博中较为凸显,大量原创性的内容爆发性地生产出来。一些源于普通民众的语句经过微博的传播后,被网民称为“经典”,丰富了百姓生活。如“经典语录”告诉我们:“人生朋友分三种:一辈子的、一杯子的、一被子的。得意时,朋友们认识了你;落难时,你重新认识了朋友。”“当全世界都要我放弃的时候,我还是期待有人轻语一声:“再试一次。” 3.即时传播,占据信息发布制高点 2008年11月印度孟买的恐怖袭击事件、2009年6月迈克尔?杰克逊的死讯,都由Twitter首发。在国内,2008年5月12日汶川地震后,当天下午2点35分33秒Twitter上出现第一条关于地震的消息,比彭博社、路透社等的通讯社电稿都要快; 2011年高铁事件“求救!动车D301现在脱轨在距离温州南站不远处!现

C#调用存储过程简单完整例子讲解

C#调用存储过程简单完整例子https://www.sodocs.net/doc/2416189369.html,/itblog/article/details/752869 创建存储过程 Create Proc dbo.存储过程名 存储过程参数 AS 执行语句 RETURN 执行存储过程 GO DECLARE @iRet INT, @PKDisp VARCHAR(20) SET @iRet = '1' Select @iRet = CASE WHEN @PKDisp = '一' THEN 1 WHEN @PKDisp = '二' THEN 2 WHEN @PKDisp = '三' THEN 3 WHEN @PKDisp = '四' THEN 4 WHEN @PKDisp = '五' THEN 5 ELSE 100 END DECLARE @i INT SET @i = 1 WHILE @i<10 BEGIN set @i=@i+1 PRINT @i END DECLARE @d INT set @d = 1 IF @d = 1 BEGIN -- 打印 PRINT '正确' END ELSE BEGIN PRINT '错误' END

CREATE PROC P_TEST @Name VARCHAR(20), @Rowcount INT OUTPUT AS BEGIN SELECT * FROM T_Customer WHERE NAME=@Name SET @Rowcount=@@ROWCOUNT END GO ---------------------------------------------------------------------------------------- --存储过程调用如下: ---------------------------------------------------------------------------------------- DECLARE @i INT EXEC P_TEST 'A',@i OUTPUT SELECT @i --结果 /* Name Address Tel ---------- ---------- -------------------- A Address Telphone (所影响的行数为 1 行) ----------- 1 (所影响的行数为 1 行) */ ---------------------------------------------------------------------------------------- --DotNet 部分(C#) --WebConfig 文件: ---------------------------------------------------------------------------------------- ......

微博传播路径分析图

微博传播路径分析图 作者: | 来源:艾瑞网 发布于:2011-07-25 微博的功能在于可扩大媒体传播力度、相同话题的群体、以关系为核心的群发布,而媒体的盈利模式在于广告推送,是被动接受,恰恰微薄传播方式是 主动获取所以在信息接收层面来说,微博的软营销与微博的产品诉求是冲突的。 企业可以通过各种手段(如通过奖励的转发评论等)带来的粉丝,是被动加入的,而非主动加入。因为对于企业所提供信息而言,并没有给粉丝明确的 需求。其实企业通过微博在线上获取的用户,最大的问题就是用户转化率问题。 而转化率的关键在于通过长时间的转发从而真正寻找到合适恰当的用户,这需 要较长的时间与较大的精力和财力的投入。 企业建立微博的路径: 第一,企业投入一定的成本,或通过线上活动,或通过线下推广,获得大规模粉丝关注(当然通过这样的手段所获得的粉丝的忠实度需要思考)。 第二,通过发布大量可读性的信息,吸引大量用户对其话题的讨论、转发。 从而引发更多的关注与粉丝。这要求博主找到与自身企业与公众之间好的话题 切入点,同时企业要花费大量精力与成本对内容持续长期的经营。事实证明,企业结合自身行业,对该行业的分析论述更容易找到最终的客户群体,并能引 发较长尾的Follow。 思考: 默默的为微博平台提供有价值可读的信息,一旦内容失去可读性,粉丝群将大量流失。之前的工作将前功尽废。 企业微博传播路径图:

释义: 行业知识(行业分析、价格指数): 跟随者:客户、准客户 转化率:随Follow的级别的增加跟随者数量减少但是客户的精度也随之提高。 营销: 1、活动: 跟随者:非客户、准客户、客户

转化率:前期建立的粉丝较多,但精准性差,Follow的级别多,精度不高。 活动的一级传播是针对原有企业粉丝,所以一级传播精准度较高之后级别更高。 2、硬广 跟随者:无跟随 最后值得一提的是从信息的传播上来看,当年社区的泛娱乐化传播和今日的微博非常相似,而这些社区也在苦苦思索盈利模式,营销传播模式,其根源并非在于泛娱乐化平台,而在于这些以群、圈、关系、兴趣点为核心的社区是否能够为用户解决实际问题,单纯的信息传播,恐怕很难成为垄断级产品。 所以微博是猫扑、天涯是博客还是qq,就要看能否改变泛娱乐化的信息传播模式,提出更具实用价值的功能,才是微博的杀手级别的应用。微博值得思考当年的腾讯qq是怎样通过对用户生活的微渗透,从娱乐化工具逐渐转变为实用性工具的。

JAVA通过MyBatis调用MySql存储过程和函数

JAV A通过MyBatis调用MySql存储过程和函数 1.引言 无论是采用SPRING MVC框架开发WEB画面,还是开发需按一定时间间隔执行的批处理,都可能要调用数据库的存储过程或函数。其间调用参数设置不正会浪费大量调试时间初学者甚至放弃使用存储过程。本文记录了通过MyBatis调用MySql存储过程和函数的具体参数设置内容,供参考。 2.MySql存储过程例 /*全公司员工下一年度带薪休假一发赋予处理*/ CREATE DEFINER=`DBuser`@`%` PROCEDURE `paid_vacation_compute `( OUT p_返回值 INT(11) , INOUT p_员工号 CHAR(3) , p_操作者ID VARCHAR(3)) PROC_START: BEGIN /* 变量声明 */ DECLARE done INT; #异常退出控制变量 DECLARE empNo CHAR(3); #员工号 DECLARE dateHire date; #分公司就职日 DECLARE workYears INT; #集团内工作年数 DECLARE lastYearRemainDays FLOAT; #昨年残日数(允许以小时为单位休假) DECLARE nowYearleaveDays FLOAT; #今年休暇日数(允许以小时为单位休假) DECLARE elapseYear INT; #入集团经过年度数 /* 游标声明 */ #上年带薪休假数据 DECLARE staffPaidVacationDaysCur CURSOR FOR SELECT a.EMP_NO, #员工号 a.DATE_HIRE, #入职日期 a.WORK_YEARS, #工作年限 b.REMAIN_DAYS # 上年带薪休假应休但未休残日数 FROM T_EMPLOYEE AS a, T_PAID_VACATION AS b WHERE a. EMP_NO = b. EMP_NO /* 程序退出规定声明 */ DECLARE CONTINUE HANDLER FOR NOT FOUND SET SET done = 1;

微博传播分析

@互联网数据分析大师微博传播效果分析

微博传播本质: 在国内,微博客自诞生只有3年,但其应用已经发展到社会的方方面面。它不仅是个人自我表达、人际交流的工具,还日渐发展成为政府、企业、组织用于信息发布、公关营销的手段。 从这个层面看,无论是个人、政府,还是组织、企业,都可以通过微博客实现自己的某些传播意图,或营造理想的自我形象,或形成与民众畅达的沟通机制,或打造良好的企业品牌。对于任何一种媒介形式,不同的传播主体依赖不同的传播路径和传播手段,而不同传播路径产生的传播效果也不尽相同。因此,研究微博客,以及其传播效果,对于如何在新媒体环境下,利用微博客进行有效、高效的传播显得尤为必要。 微博客传播效果研究 传播效果,是相对于传播行为过程而言。本文是关于传播效果的研究,应首先从传播学概念上规定与之对应的传播行为。本文将其称之为“微博传播”,下文我们说传播效果,实指“微博传播”的传播效果(或微博客的传播效果)。 一微博传播及其效果构成 所谓“微博传播”,简而言之,即在微博客中的传播活动,亦可看作微博客用户的信息交换和分享的过程。人类社会的信息传播具有明显的过程性和系统性,因此,本文也分别从这两个维度对“微博传播”进行简单分析。 (一)过程维度 从过程性上看,任何传播活动都是具有一定结构,由一定环节和要素构成的动态、序列过程。这里,我们不妨引用拉斯韦尔的“5w模式”略作分析。由于“微博传播”也是网络传播的一种,网络传播的一大特点是传受一体性,因此,这里我们把“微博传播”中的传播者和收受者合称为传播主体。见表3: (二)系统维度 从系统性上看,我们“把传播看做是一个由相互联系、相互作用的各个部分(或过程)构成并执行特定功能的有机整体,这个系统的运行不仅受到它内部结构的制约,而且受到外部环境的影响,与环境保持着互动的关系。” 微博客是建立在网络技术和移动通讯技术基础上的产物,从登录方式上,即

使用JAVA存储过程导入EXCEL文件操作指南

利用JAV A存储过程进行EXCEL导入 导入思路 顾问提供的PO导入FORM已经给了我们一个导入数据到系统的一个模板,基本能够满足我们的要求,该FORM主要完成以下动作: 1.显示文件上传页面给用户选择文件 2.将文本文件以字符流的形式存入到fnd_lobs表的BLOB字段 3.从BLOB字段读取数据,通过逗号分割(,)的方式从BLOB字段获取每个字段的值 4.存入系统临时表进行后续的导入处理 该方法的主要缺点在于需要用户手工将EXCEL文件存为.csv文件(即普通.txt文件),以及通过逗号分割进行解析字符流的方式进行文本文件的处理,如果用户提供的EXCEL单元格的数据中有逗号(,),则解析会出错。 该方法可以利用JAV A存储过程进行改进为: 1.在上传页面用户直接上传EXCEL文件 2.将文本文件以字符流的形式存入到fnd_lobs表的BLOB字段 3.以BLOB字段作为文件输入流,调用JAV A存储过程获取EXCEL文件内容 4.存入系统临时表进行后续的导入处理 在新方法的第3步中,调用JAV A类型的存储过程,引用处理EXCEL的JAV A API进行文件内容的读取。由于是直接解析EXCEL文件,可以减少出错的概率,另外也可以通过对API 进行替换的方式来处理其他类型的文件,如WORD或XML文件等。 导入实现 具体细节部分请参照附件的XXEXCELIMPORT.fmb文件,以下部分只说明主要步骤。 创建FORM 1.创建临时表块以及上传功能按钮 2.添加上传文件功能, 以上FORM部分具体参照顾问提供的PO导入FORM以及其中的文件上传程序段UPLOAD_FILE

SQL存储过程实例

题目1 1、学校图书馆借书信息管理系统建立三个表: 学生信息表:student 图书表:book 借书信息表:borrow 请编写SQL语句完成以下的功能: 1)查询“计算机”专业学生在“2007-12-15”至“2008-1-8”时间段内借书的学生编号、 学生名称、图书编号、图书名称、借出日期;参考查询结果如下图所示: 2)查询所有借过图书的学生编号、学生名称、专业;参考查询结果如下图所示:

3)查询借过作者为“安意如”的图书的学生姓名、图书名称、借出日期、归还日期; 参考查询结果如下图所示: 4)查询目前借书但未归还图书的学生名称及未还图书数量;参考查询结果如下图所 示: 附加:建表语句:

标准答案:

题目2 程序员工资表:ProWage 创建一个存储过程,对程序员的工资进行分析,月薪1500到10000不等,如果有百分之五十的人薪水不到2000元,给所有人加薪,每次加100,再进行分析,直到有一半以上的人大于2000元为止,存储过程执行完后,最终加了多少钱? 例如:如果有百分之五十的人薪水不到2000,给所有人加薪,每次加100元,直到有一半以上的人工资大于2000元,调用存储过程后的结果如图:

请编写T-SQL来实现如下功能: 1)创建存储过程,查询是否有一半程序员的工资在2200、3000、3500、4000、5000或6000 元之上,如果不到分别每次给每个程序员加薪100元,至之一半程序员的工资达到2200,3000,3500,4000,5000或6000元。 2)创建存储过程,查询程序员平均工资在4500元,如果不到则每个程序员每次加200元, 至到所有程序员平均工资达到4500元。 建表语句

使用Java语言开发存储过程

Oracle8i中使用Java语言来开发存储过程 本篇文章来源与时代朝阳数据库(原晓通数据库)培训部Oracle 资料库。 在Oracle8i之前,开发人员只能使用PL/SQL来开发存储过程。而在Oracle8i 之中,不仅可以使用原有的PL/SQL开发存储过程,而且也可以使用Java语言来开发存储过程。本篇文章将简单介绍关于这方面的知识,包括以下内容: ●存储过程简介; ●Java存储过程 ●Java存储过程的开发步骤 ●使用Java开发过程; ●使用Java开发函数; ●使用Java开发包; ●使用Java开发触发器; ●使用Java开发对象方法; ●使用JDeveloper开发JSP。 存储过程简介 存储过程是存储在数据库中的一段存储程序。当创建存储过程时,系统会对其进行编译,并将执行代码存储到数据库中。 1.设计存储过程的方针 ●在定义存储过程时,要使用其完成单一、相对集中的任务。

●在定义存储过程时,不要定义已经由其它特征所提供功能的过程。例如, 不要定义强制数据完整性的过程(使用完整性约束)。 2.存储过程的优点 1)安全性 当创建了存储过程之后,可以将执行该过程的权限授予其它用户,从而使得他可以执行特定的数据库操作,而不能访问其它模式对象(例如表)。例如,你可以将执行过程(更新表)的权限授予其它用户,但不授予它们直接访问该表的权限。 2)性能 ●存储过程只被发送到数据库一次,相对于SQL语句或PL/SQL块而言, 其网络通信量更小。 ●当调用存储过程时,数据库会直接运行该存储过程,无需进行编译。相 对于SQL语句或PL/SQL块而言,其执行速度更快。 3)内存分配 存储过程充分利用了Oracle共享内存的能力。在将存储过程装载到内存中后,多个用户可以同时调用该存储过程,从而降低了应用对Oracle的实际内存需求。 4)生产力 存储过程提高了开发生产力。通过将公共集合编写为存储过程,避免了冗余代码,从而提高了开发生产力。例如,我们可以编写用于插入、更新、删除AUTHS

C#执行存储过程代码实例

C#执行存储过程代码实例,演示如何用C#调用并执行SQLSERVER的存储过程,是一个数据库的高级应用,存储过程相对专业些,但效率更高,而且使SQL的功能发挥的更强大,这仅是一个较简单的存储过程调用例子: 01using System; 02using System.Data; 03using System.Data.SqlClient; 04namespace ExecuteStorageProcess 05{ 06 public class ExecuteStorageProcess 07 { 08 public static void Main() 09 { 10 SqlConnection mySqlConnection = 11 new SqlConnection( 12 "server=localhost;database=Northwind;uid=sa;pwd=sa" 13 ); 14 mySqlConnection.Open(); 15 // 设置CommandText属性为EXECUTE语句 16 SqlCommand mySqlCommand = mySqlConnection.CreateCommand(); 17 https://www.sodocs.net/doc/2416189369.html,mandText = 18 "EXECUTE AddProduct @MyProductID OUTPUT, @MyProductName, " + 19 "@MySupplierID, @MyCategoryID, @MyQuantityPerUnit, " + 20 "@MyUnitPrice, @MyUnitsInStock, @MyUnitsOnOrder, " + 21 "@MyReorderLevel, @MyDiscontinued"; 22 // 添加过程调用所要用到的参数 23 mySqlCommand.Parameters.Add("@MyProductID", SqlDbType.Int); 24 mySqlCommand.Parameters["@MyProductID"].Direction = 25 ParameterDirection.Output; 26 mySqlCommand.Parameters.Add( 27 "@MyProductName", SqlDbType.NVarChar, 40).Value = "Widget"; 28 mySqlCommand.Parameters.Add( 29 "@MySupplierID", SqlDbType.Int).Value = 1; 30 mySqlCommand.Parameters.Add( 31 "@MyCategoryID", SqlDbType.Int).Value = 1; 32 mySqlCommand.Parameters.Add( 33 "@MyQuantityPerUnit", SqlDbType.NVarChar, 20).Value = "1 per box"; 34 mySqlCommand.Parameters.Add( 35 "@MyUnitPrice", SqlDbType.Money).Value = 5.99; 36 mySqlCommand.Parameters.Add( 37 "@MyUnitsInStock", SqlDbType.SmallInt).Value = 10; 38 mySqlCommand.Parameters.Add( 39 "@MyUnitsOnOrder", SqlDbType.SmallInt).Value = 5;

微博广告发展现状与传播效果分析

2012年第11卷第2期 产业与科技论坛 微博广告发展现状与传播效果分析 □陈倩 【摘要】微博作为Web2.0时代的重要产物,正以高调的姿态迅速走入中国网民的视野,其衍生物———微博广告的发展也被公众提上了议事日程。微博自身的便捷性、信息传递的及时性、沟通的交互性等特点,为广告主和受众提供了一个便捷的交流平台。本文从微博发展规模、广告传播效果及发展趋势等方面入手,旨在对微博广告的发展进行可行性分析。 【关键词】微博;广告;意见领袖;议程设置 【作者简介】陈倩(1990.6 ),女,陕西安康人;西北师范大学文史学院新闻系2009级本科生 随着Web2.0时代的到来,互联网逐渐走进了千家万户。中国互联网络中心(CNNIC)2012年1月16日发布的《第29次中国互联网络发展状况统计报告》显示,截至2011年12月底,中国网民规模达到5.13亿,全年新增网民5,580万;互联网普及率较上年底提升4个百分点,达到38.3%。中国手机网民规模达到3.56亿,同比增长17.5%;截至2011年6月底,微博用户数量以高达208.9%的增幅,从2010年底的6,311万人爆发增长到1.95亿,成为用户增长最快的互联网应用模式。 微博(MicroBlog),即微型博客,指在140字的范围内,通过Web、手机客户端、IM及时通讯软件(包括QQ、MSN……)等网络设备发表简短的文字以达成抒发心情、谈论实事等目的,并能够实现信息的即时共享。2006年Twitter(推特)这一微型博客先驱在美国的走红使中国各门户网站看到了希望。2009年8月,国内知名网站新浪网开始内测,并在之后仅用了66天注册用户就突破了100万大关。新浪网于2011年8月份公布的二季度财报中显示其微博用户已经突破2亿,再加上腾讯、搜狐等国内其他门户网站的微博及饭否等独立微博,中国微博用户注册量已达到相当大的规模。 一、微博广告发展现状 随着微博自身影响力的增强以及“全民化”的发展态势,商家们从中寻找到新的商机,微博也成为了一个连接消费者和商家的平台,微博广告逐渐走进了人们的视野。微博广告,即在微博信息中有目的的发布产品和品牌的推广信息,提高品牌知名度和美誉度,从而促进销售。微博广告可以是个人行为、企业行为,也可以聘请专门的广告团队进行打造。根据目前微博广告的发展现状,可以大致将微博广告类型划分为以下几种: (一)通过微博中介平台转发广告微博。自微博摆脱“少数人的享受工具”之名成为“今天你微博了吗”的大众资源之后,微博广告的发展也开始来势汹汹。目前,网上已经存在专门为广告主和微博用户牵头拉线的微博中介平台,号称“中国最大的微博营销平台”的“微传播”网站就是其中之一,它们的主要任务是为广告主提供发布信息的渠道,同时为想要通过微博赚钱的用户提供广告来源,从而在广告主的“悬赏金”中抽取提成以维持盈利。 (二)利用微博名人资源进行商业营销。广告主自身通过关注名人、向名人发私信、@名人微博等方式联系名人,以一定的报酬换取名人转发含广告内容的微博,以实现更大的传播范围,扩大企业影响力,并对积极参与者进行抽奖等奖励措施。著名编剧石康在自己微博上爆料,其微博是付费微博,2元/字,且大多数明星也如此,一条广告微博按100字计算,其转发一条微博至少也能赚两千余元,这也成为很多明星对转发广告微博趋之若鹜的主要原因。 (三)企业自己开设微博,发布有趣的内容,吸引博友主动转发。新浪微博专门开设了“企业版”,能够帮助企业更加便捷的与目标用户相互沟通,提升营销效果,挖掘更多商业机会。著名购物网站麦考林就开通了企业的新浪微博,时常发布最新的商品广告及折扣信息,并用抽奖的方式吸引网友们的参与。 (四)微博隐性广告。这种广告行为并非其发布者主动意愿,而是微博自身的内容对广大网友产生了吸引力,其中提及的商品等被大家所认可,很多网友会通过私信、评论等方式寻问购买途径、商品价格等,从而间接地成为一种广告。例如新浪上人气比较高的“零食主义控”等,就经常在微博中发布各种零食图片,其评论栏里常常会看到不少心动的网友询问购买地点。这种微博无疑为提高商品人气做出了一定贡献。 二、微博广告的传播效果分析 互联网作为大众传播中的一种,其衍生物微博同样具有非常重要的大众传播效果,那么微博广告的大众传播效果具体表现在哪些方面呢? (一)意见领袖。拉扎斯菲尔德等人在1940年美国总统大选期间的“伊里调查”中显示,大众传播并不是直接“流”向一般受众,而是要经过意见领袖这个中间环节。这里的意见领袖是指活跃在人际传播网络中,经常为他人提供信息、观点或建议并对他人施加个人影响的人物。在微博广告传播过程中,发布广告的用户就充当了“意见领袖”的角色,尤其

mysql存储过程.详细说明,java代码调用过程

Mysql存储过程调用 说明: 由括号包围的参数列必须总是存在。如果没有参数,也该使用一个空参数列()。每个参数默认都是一个IN参数。要指定为其它参数,可在参数名之前使用关键词OUT或INOUT 在mysql客户端定义存储过程的时候使用delimiter命令来把语句定界符从;变为//。 当使用delimiter命令时,你应该避免使用反斜杠(‘"’)字符,因为那是MySQL的转义字符。 1、创建过程格式: Mysql> drop procedure if exists user_findById; Mysql> delimiter // Create procedure user_findById(in n int) Begin Select * from user where id= n; End // 调用过程: Mysql> set @n=1; --定义变量 Call user_findById(@n);--调用过程 // --显示结果 ======================================================

例2: Mysql> drop procedure if exists user_count; Mysql> delimiter // Create procedure user_count(out count int) Begin Select count(*) into count from user; End // --结束 注意: MySQL存储过程 “in”参数: 跟 C语言的函数参数的值传递类似, MySQL存储过程内部可能会修改此,参数,但对 in类型参数的修改,对调用者(caller)来说是不可见的(not visible)。 “out”参数: 从存储过程内部传值给调用者。在存储过程内部,该参数初始值为 null,无论调用者是否给存储过程参数设置值inout参数跟 out类似,都可以从存储过程内部传值给调用者。不同的是:调用者还可以通过 inout参数传递值给存储过程。 总结:如果仅仅想把数据传给MySQL存储过程,那就使用“in”类型 参数;如果仅仅从MySQL存储过程返回值,那就使用“out”类型参数;如果需要把数据传给MySQL存储过程,还要经过一些计算后再传回给我们,

政务微博传播效果分析——以新浪微博“南阳交警”为例

政务微博传播效果分析——以新浪微博“南阳交警”为例

————————————————————————————————作者:————————————————————————————————日期:

政务微博传播效果分析——以新浪微博“南阳交警”为例- 新闻学 政务微博传播效果分析——以新浪微博“南阳交警”为例 廖娟美张彦孙晓芳 【摘要】本文以河南省南阳市公安交通警察支队官方微博“南阳交警”为研究对象,通过对其2014 年11、12 月份微博样本的研究,探析其微博运营管理特色、传播效果,以及“南阳交警”政务微博在运营中存在的问题,并提出可行性建议。 关键词政务微博南阳交警传播效果 一、“南阳交警”新浪微博的发展历程政务微博是微博的一种形式,是由政府部门及其官员开设的主要用于倾听人民心声、诉求,排解与政府管理有关的实际的问题,传达党和政府的有关政策,及时公布相关数据和事件,从而进行网上解决问题的相关微博。 “南阳交警”成立于2011 年3 月,是南阳市公安交通警察支队开通的官方微博,截止到2015 年6 月底,“南阳交警”共发布微博17608条,粉丝量达到10万左右,本文主要截取了2014 年11 月1 日—12 月31 日的微博,共计1474 条,其中原创945 条,转发529条。通过采用抽样调查法,在两个月中抽取20次,共计500条作为样本,并利用SPSS 软件进行统计,从微博发布量、内容、发布时间及类型上进行文本分析。 二、“南阳交警”政务微博的现状和问题 1、“南阳交警”政务微博现状 (1)发布数量增长

经历三年多的发展,2014 年“南阳交警”政务微博在规模、数量以及影响力上得到进一步提升。从2011 年开通官方微博以来,“南阳交警”微博发布量由650 多条到2014 年底的6720 多条,呈逐年递增趋势。“南阳交警”从单一的信息发布转变为交通服务型微博平台,受众通过看“南阳交警”的官方微博可以了解最新最全面的实时路况查询、提供事故快速理赔,极大地方便了人们的交通出行。 (2)话题设置多样 在相关政府部门的指导和政务工作人员的管理下,“南阳交警”已经设置30多个固定话题,包含“安全宣传”、“河南高速路况”、“警方提醒”、“微警示”、“交警为你导航”等。其中,作为“南阳交警”原创的话题的“实时路况”发布最多,占话题微博29%,“安全宣传”占17.6%,“南阳交警”及时为百姓提供市区繁忙的路况信息,为广大司机提供便捷实用的交通安全知识,转变为交通服务型微博平台。

用JDBC操作Oracle的存储过程返回值.

用JDBC操作Oracle的存储过程返回值 Oracle的存储过程可以返回任何类型,包括一个ResultSet,JDBC自带的CallableStatement可以提供操作这些返回值得借口,其中我们可以通过registerOutParameter来注册需要返回的类型。CallableStatement是PrepareStatement的一个子类,但提供了返回和注册Out类型参数的功能。我们看一下例子,在Oracle里面我们定义了一个包如下: create or replace package GP_TESTP is type my_dCursor is ref cursor; procedure GP_Test(m_cursor2 OUT my_dCursor; end GP_TESTP; create or replace package body GP_TESTP is procedure GP_Test(m_cursor2 OUT my_dCursor is begin open m_cursor2 for select bom.material_no,bom.product_no from gp2_bom bom where bom.year=2006 ; end GP_Test; end GP_TESTP; 在JDBC里面我们可以通过如下的接口来得到返回的动态游标的内容 Global.start(; //初始化连接池 ConnectionWrapper wrapper=ConnectionPoolFactory.getPoolInstance(.borrowConnection(;//从连接池里面返回连接 Connection conn=wrapper.getConnection(; try { String callSql="{call GP_TESTP.GP_Test(?}"; CallableStatement cs = null; ResultSet rs=null; cs = conn.prepareCall(callSql; cs.registerOutParameter(2,oracle.jdbc.OracleTypes.CURSOR; cs.execute(; rs = (ResultSetcs.getObject(2; while(rs.next({ //String s=rs.get(""; String component=rs.getString(2; String productNo=rs.getString(4; System.out.println("component="+component+"-------productNo="+productNo; } } catch (SQLException e { // TODO Auto-generated catch block e.printStackTrace(; } 注意兰颜色的代码是注册动态游标和返回结果集的关键代码。 ======================================= 2008年07月06日星期日 07:41 P.M.一:无返回值的存储过程存储过程为: CREATE OR REPLACE PROCEDURE TESTA(PARA1 IN VARCHAR2,PARA2 IN VARCHAR2 AS BEGIN INSERT INTO HYQ.B_ID (I_ID,I_NAME VALUES (PARA1, PARA2; END TESTA; 然后呢,在java里调用时就用下面的代码: package com.hyq.src; import java.sql.*; import java.sql.ResultSet; public class TestProcedureOne { public TestProcedureOne( { } public static void main(String[] args { String driver = "oracle.jdbc.driver.OracleDriver"; String strUrl = "jdbc:oracle:thin:@127.0.0.1:1521: hyq "; Statement stmt = null;

oracle存储过程学习经典[语法实例调用]

Oracl e 存储过程学习 目录 Oracle 存储过程1 Oracle存储过程基础知识1 Oracle存储过程的基本语法2 关于Oracle存储过程的若干问题备忘4 1.在Oracle中,数据表别名不能加as。5 2.在存储过程中,select某一字段时,后面必须紧跟into,如果select整个记录,利用 游标的话就另当别论了。5 3.在利用select...into...语法时,必须先确保数据库中有该条记录,否则会报出"no data found"异常。5 4.在存储过程中,别名不能和字段名称相同,否则虽然编译可以通过,但在运行阶段 会报错5 5.在存储过程中,关于出现null的问题5 6.Hibernate调用Oracle存储过程6 用Java调用Oracle存储过程总结6 一、无返回值的存储过程6 二、有返回值的存储过程(非列表)8 三、返回列表10 在存储过程中做简单动态查询11 一、本地动态SQL12 二、使用DBMS_SQL包14 Oracle存储过程调用Java方法16 Oracle高效分页存储过程实例17 Oracle存储过程基础知识 商业规则和业务逻辑可以通过程序存储在Oracle中,这个程序就是存储过程。 存储过程是SQL, PL/SQL, Java 语句的组合,它使你能将执行商业规则的代码从你的应用程序中移动到数据库。这样的结果就是,代码存储一次但是能够被多个程序使用。 要创建一个过程对象(procedural object),必须有CREATE PROCEDURE 系统权限。如果这个过程对象需要被其他的用户schema 使用,那么你必须有CREATE ANY PROCEDURE 权限。执行procedure 的时候,可能需要excute权限。或者EXCUTE ANY PROCEDURE 权限。如果单独赋予权限,如下例所示: grant execute on MY_PROCEDURE to Jelly 调用一个存储过程的例子: execute MY_PROCEDURE( 'ONE PARAMETER'); 存储过程(PROCEDURE)和函数(FUNCTION)的区别。

java调用存储过程返回结果集,返回字符串

package com.utour.util; import java.sql.CallableStatement; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.ResultSetMetaData; import java.util.ArrayList; import java.util.Arrays; import java.util.List; import com.sun.xml.internal.bind.v2.runtime.unmarshaller.XsiNilLoader.Array; /** * java调用存储过程 * * @author Administrator * */ public class JavaCallPro { /** * @param args * @throws Exception */ public static void main(String[] args) throws Exception { // TODO Auto-generated method stub String s = testOutParams(); System.out.println(s); // // List list = test(); // // for(int i=0;i

相关主题