存储过程应用实例(sql存储过程几个简单例子)

2026-04-25 01:45:01 :0

存储过程应用实例(sql存储过程几个简单例子)

“存储过程应用实例”相关信息最新大全有哪些,这是大家都非常关心的,接下来就一起看看存储过程应用实例(sql存储过程几个简单例子)!

本文目录

sql存储过程几个简单例子



20),
@pwd varchar(20)
as
select * from ren where sname=@sname and pwd=@pwd
go
查看结果:proc_stu ‘admin‘,‘admin‘
例2:
下面的存储过程实现用户验证的功能,如果不成功,返回0,成功则返回1.
CREATE PROCEDURE VALIDATE @USERNAME CHAR(20),@PASSWORD CHAR(20),@LEGAL BIT OUTPUT
AS
IF EXISTS(SELECT * FROM REN WHERE SNAME = @USERNAME AND PWD = @PASSWORD)
SELECT @LEGAL = 1
ELSE
SELECT @LEGAL = 0
在程序中调用该存储过程,并根据@LEGAL参数的值判断用户是否合法。
例3:一个高效的数据分页的存储过程 可以轻松应付百万数据
CREATE PROCEDURE pageTest --用于翻页的测试
--需要把排序字段放在第一列
(
@FirstID nvarchar(20)=null, --当前页面里的第一条记录的排序字段的值
@LastID nvarchar(20)=null, --当前页面里的最后一条记录的排序字段的值
@isNext bit=null, --true 1 :下一页;false 0:上一页
@allCount int output, --返回总记录数
@pageSize int output, --返回一页的记录数
@CurPage int --页号(第几页)0:第一页;-1最后一页。
)
AS
if @CurPage=0--表示第一页
begin
--统计总记录数
select @allCount=count(ProductId) from Product_test
set @pageSize=10
--返回第一页的数据
select top 10
ProductId,
ProductName,
Introduction
from Product_test order by ProductId
end
else if @CurPage=-1--表示最后一页
select * from
(select top 10 ProductId,
ProductName,
Introduction
from Product_test order by ProductId desc ) as aa
order by ProductId
else
begin
if @isNext=1
--翻到下一页
select top 10 ProductId,
ProductName,
Introduction
from Product_test where ProductId 》 @LastID order by ProductId
else
--翻到上一页
select * from
(select top 10 ProductId,
ProductName,
Introduction
from Product_test where ProductId 《 @FirstID order by ProductId desc) as bb order by ProductId
end
sql存储过程几个简单例子
标签:topextcolorproceduresel数据分页参数例子比较

oracle数据库存储过程实例

创建存储过程的语句如下:
CREATE PROCEDURE<过程名>
<参数1》,「方式l]<数据类型1》,
<参数2》,<数据类型2》,
……)
IS|AS (is或as完全等价)
BEGIN
PL/SQL过程体
END<过程名>
例如,下面是一个删除表的存储过程:
--参数:tableName 要删除的表名
create or replace procedure del_table(tableName varchar2) as
--定义变量
sql_del_table long;
begin
--构造sql语句
sql_del_table := ’drop table ’ || tableName;
--执行
EXECUTE IMMEDIATE sql_del_table;

end del_table;

SQL2005 存储过程调用存储过程,求实例

Java调用SQL Server的存储过程详解
包含了如下几部分
使用不带参数的存储过程
使用带有输入参数的存储过程
使用带有输出参数的存储过程
使用带有返回状态的存储过程
使用带有更新计数的存储过程
1使用不带参数的存储过程
使用 JDBC 驱动程序调用不带参数的存储过程时,必须使用 call SQL 转义序列。不带参数的 call 转义序列的语法如下所示:
{call procedure-name}
作为实例,在 SQL Server 2005 AdventureWorks 示例数据库中创建以下存储过程:
SQL codeCREATE PROCEDURE GetContactFormalNames
AS
BEGIN
SELECT TOP 10 Title + ’ ’ + FirstName + ’ ’ + LastName AS FormalName
FROM Person.Contact
END
此存储过程返回单个结果集,其中包含一列数据(由 Person.Contact 表中前十个联系人的称呼、名称和姓氏组成)。
在下面的实例中,将向此函数传递 AdventureWorks 示例数据库的打开连接,然后使用 executeQuery 方法调用 GetContactFormalNames 存储过程。
Java codepublic static void executeSprocNoParams(Connection con) ...{
try ...{
Statement stmt = con.createStatement();
ResultSet rs = stmt.executeQuery("{call dbo.GetContactFormalNames}");
while (rs.next()) ...{
System.out.println(rs.getString("FormalName"));
}
rs.close();
stmt.close();
}
catch (Exception e) ...{
e.printStackTrace();
}
}
2使用带有输入参数的存储过程
使用 JDBC 驱动程序调用带参数的存储过程时,必须结合 SQLServerConnection 类的 prepareCall 方法使用 call SQL 转义序列。带有 IN 参数的 call 转义序列的语法如下所示:
{call procedure-name}
构造 call 转义序列时,请使用 ?(问号)字符来指定 IN 参数。此字符充当要传递给该存储过程的参数值的占位符。可以使用 SQLServerPreparedStatement 类的 setter 方法之一为参数指定值。可使用的 setter 方法由 IN 参数的数据类型决定。
向 setter 方法传递值时,不仅需要指定要在参数中使用的实际值,还必须指定参数在存储过程中的序数位置。例如,如果存储过程包含单个 IN 参数,则其序数值为 1。如果存储过程包含两个参数,则第一个序数值为 1,第二个序数值为 2。
作为如何调用包含 IN 参数的存储过程的实例,使用 SQL Server 2005 AdventureWorks 示例数据库中的 uspGetEmployeeManagers 存储过程。此存储过程接受名为 EmployeeID 的单个输入参数(它是一个整数值),然后基于指定的 EmployeeID 返回雇员及其经理的递归列表。下面是调用此存储过程的 Java 代码:
Java codepublic static void executeSprocInParams(Connection con) ...{
try ...{
PreparedStatement pstmt = con.prepareStatement("{call dbo.uspGetEmployeeManagers(?)}");
pstmt.setInt(1, 50);
ResultSet rs = pstmt.executeQuery();
while (rs.next()) ...{
System.out.println("EMPLOYEE:");
System.out.println(rs.getString("LastName") + ", " + rs.getString("FirstName"));
System.out.println("MANAGER:");
System.out.println(rs.getString("ManagerLastName") + ", " + rs.getString("ManagerFirstName"));
System.out.println();
}
rs.close();
pstmt.close();
}
catch (Exception e) ...{
e.printStackTrace();
}
}
3使用带有输出参数的存储过程
使用 JDBC 驱动程序调用此类存储过程时,必须结合 SQLServerConnection 类的 prepareCall 方法使用 call SQL 转义序列。带有 OUT 参数的 call 转义序列的语法如下所示:
{call procedure-name}
构造 call 转义序列时,请使用 ?(问号)字符来指定 OUT 参数。此字符充当要从该存储过程返回的参数值的占位符。要为 OUT 参数指定值,必须在运行存储过程前使用 SQLServerCallableStatement 类的 registerOutParameter 方法指定各参数的数据类型。
使用 registerOutParameter 方法为 OUT 参数指定的值必须是 Java.sql.Types 所包含的 JDBC 数据类型之一,而它又被映射成本地 SQL Server 数据类型之一。有关 JDBC 和 SQL Server 数据类型的详细信息,请参阅了解 JDBC 驱动程序数据类型。
当您对于 OUT 参数向 registerOutParameter 方法传递一个值时,不仅必须指定要用于此参数的数据类型,而且必须在存储过程中指定此参数的序号位置或此参数的名称。例如,如果存储过程包含单个 OUT 参数,则其序数值为 1;如果存储过程包含两个参数,则第一个序数值为 1,第二个序数值为 2。
作为实例,在 SQL Server 2005 AdventureWorks 示例数据库中创建以下存储过程: 根据指定的整数 IN 参数 (employeeID),该存储过程也返回单个整数 OUT 参数 (managerID)。根据 HumanResources.Employee 表中包含的 EmployeeID,OUT 参数中返回的值为 ManagerID。
在下面的实例中,将向此函数传递 AdventureWorks 示例数据库的打开连接,然后使用 execute 方法调用 GetImmediateManager 存储过程:
Java codepublic static void executeStoredProcedure(Connection con) ...{
try ...{
CallableStatement cstmt = con.prepareCall("{call dbo.GetImmediateManager(?, ?)}");
cstmt.setInt(1, 5);
cstmt.registerOutParameter(2, Java.sql.Types.INTEGER);
cstmt.execute();
System.out.println("MANAGER ID: " + cstmt.getInt(2));
}
catch (Exception e) ...{
e.printStackTrace();
}
}
本示例使用序号位置来标识参数。或者,也可以使用参数的名称(而非其序号位置)来标识此参数。下面的代码示例修改了上一个示例,以说明如何在 Java 应用程序中使用命名参数。请注意,这些参数名称对应于存储过程的定义中的参数名称:
SQL code CREATE PROCEDURE GetImmediateManager
@employeeID INT,
@managerID INT OUTPUT
AS
BEGIN
SELECT @managerID = ManagerID
FROM HumanResources.Employee
WHERE EmployeeID = @employeeID
END
存储过程可能返回更新计数和多个结果集。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 示例数据库中创建以下存储过程:
SQL codeCREATE PROCEDURE CheckContactCity
(@cityName CHAR(50))
AS
BEGIN
IF ((SELECT COUNT(*)
FROM Person.Address
WHERE City = @cityName) 》 1)
RETURN 1
ELSE
RETURN 0
END
该存储过程返回状态值 1 或 0,这取决于是否能在表 Person.Address 中找到 cityName 参数指定的城市。
在下面的实例中,将向此函数传递 AdventureWorks 示例数据库的打开连接,然后使用 execute 方法调用 CheckContactCity 存储过程:
Java codepublic static void executeStoredProcedure(Connection con) ...{
try ...{
CallableStatement cstmt = con.prepareCall("{? = call dbo.CheckContactCity(?)}");
cstmt.registerOutParameter(1, Java.sql.Types.INTEGER);
cstmt.setString(2, "Atlanta");
cstmt.execute();
System.out.println("RETURN STATUS: " + cstmt.getInt(1));
}
cstmt.close();
catch (Exception e) ...{
e.printStackTrace();
}
}
5 使用带有更新计数的存储过程
使用 SQLServerCallableStatement 类构建对存储过程的调用之后,可以使用 execute 或 executeUpdate 方法中的任意一个来调用此存储过程。executeUpdate 方法将返回一个 int 值,该值包含受此存储过程影响的行数,但 execute 方法不返回此值。如果使用 execute 方法,并且希望获得受影响的行数计数,则可以在运行存储过程后调用 getUpdateCount 方法。
作为实例,在 SQL Server 2005 AdventureWorks 示例数据库中创建以下表和存储过程:
SQL codeCREATE TABLE TestTable
(Col1 int IDENTITY,
Col2 varchar(50),
Col3 int);
CREATE PROCEDURE UpdateTestTable
@Col2 varchar(50),
@Col3 int
AS
BEGIN
UPDATE TestTable
SET Col2 = @Col2, Col3 = @Col3
END;
在下面的实例中,将向此函数传递 AdventureWorks 示例数据库的打开连接,并使用 execute 方法调用 UpdateTestTable 存储过程,然后使用 getUpdateCount 方法返回受存储过程影响的行计数。
Java code public static void executeUpdateStoredProcedure(Connection con) ...{
try ...{
CallableStatement cstmt = con.prepareCall("{call dbo.UpdateTestTable(?, ?)}");
cstmt.setString(1, "A");
cstmt.setInt(2, 100);
cstmt.execute();
int count = cstmt.getUpdateCount();
cstmt.close();
System.out.println("ROWS AFFECTED: " + count);
}
catch (Exception e) ...{
e.printStackTrace();
}
}
希望可以帮到楼主,望采纳!

如果你还想了解更多这方面的信息,记得收藏关注本站。

存储过程应用实例(sql存储过程几个简单例子)

本文编辑:admin

更多文章:


session的使用(JAVA中怎么使用session)

session的使用(JAVA中怎么使用session)

大家好,关于session的使用很多朋友都还不太明白,不过没关系,因为今天小编就来为大家分享关于JAVA中怎么使用session的知识点,相信应该可以解决大家的一些困惑和问题,如果碰巧可以解决您的问题,还望关注下本站哦,希望对各位有所帮助!

2025年10月11日 05:00

p站no valid source(万能的大佬们新人求助,p站登录一直显示错误)

p站no valid source(万能的大佬们新人求助,p站登录一直显示错误)

本篇文章给大家谈谈p站no valid source,以及万能的大佬们新人求助,p站登录一直显示错误对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。本文目录万能的大佬们新人求助,p站登录一直显示错误p站登陆错误今天P站怎么又上不去了p

2026年8月31日 15:45

default中文(default什么中文意思)

default中文(default什么中文意思)

今天给各位分享default什么中文意思的知识,其中也会对default什么中文意思进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!本文目录default什么中文意思default中文是什么意思PS黑白调整工具中cus

2026年5月16日 05:15

c语言函数调用csdn(C语言如何调用函数)

c语言函数调用csdn(C语言如何调用函数)

这篇文章给大家聊聊关于c语言函数调用csdn,以及C语言如何调用函数对应的知识点,希望对各位有所帮助,不要忘了收藏本站哦。本文目录C语言如何调用函数c语言中怎么调用自定义函数C语言函数调用的三种方式并分别举一例c语言中怎么调用自己定义的函数

2025年9月17日 04:45

知网收录多少种刊(知网收录上海市地方报纸有几种)

知网收录多少种刊(知网收录上海市地方报纸有几种)

本篇文章给大家谈谈知网收录多少种刊,以及知网收录上海市地方报纸有几种对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。本文目录知网收录上海市地方报纸有几种CNKI 数据库中信息科技专辑收录的期刊数中国知网报纸数据库收录的周三报有多少种知

2026年9月18日 09:30

登录界面背影图片(为什么微信的开机画面是地球,有什么含义吗)

登录界面背影图片(为什么微信的开机画面是地球,有什么含义吗)

大家好,登录界面背影图片相信很多的网友都不是很明白,包括为什么微信的开机画面是地球,有什么含义吗也是一样,不过没有关系,接下来就来为大家分享关于登录界面背影图片和为什么微信的开机画面是地球,有什么含义吗的一些知识点,大家可以关注收藏,免得下

2025年11月8日 14:00

什么时候用xhtml(xhtml html该学哪一个是学了第一个还可以学第二个 两个都有好处吗 还是说两个用处有点类似)

什么时候用xhtml(xhtml html该学哪一个是学了第一个还可以学第二个 两个都有好处吗 还是说两个用处有点类似)

本篇文章给大家谈谈什么时候用xhtml,以及xhtml html该学哪一个是学了第一个还可以学第二个 两个都有好处吗 还是说两个用处有点类似对应的知识点,文章可能有点长,但是希望大家可以阅读完,增长自己的知识,最重要的是希望对各位有所帮助,

2025年11月16日 23:30

java动画代码(求一个java画圆代码 画随机的圆 设计要求: 编一个Applet,实现简单的动画具体要求:自动出现由小到大变)

java动画代码(求一个java画圆代码 画随机的圆 设计要求: 编一个Applet,实现简单的动画具体要求:自动出现由小到大变)

其实java动画代码的问题并不复杂,但是又很多的朋友都不太了解求一个java画圆代码 画随机的圆 设计要求: 编一个Applet,实现简单的动画具体要求:自动出现由小到大变,因此呢,今天小编就来为大家分享java动画代码的一些知识,希望可以

2025年8月5日 09:45

springboot其实就是spring(Spring boot与Spring cloud 是什么关系)

springboot其实就是spring(Spring boot与Spring cloud 是什么关系)

本篇文章给大家谈谈springboot其实就是spring,以及Spring boot与Spring cloud 是什么关系对应的知识点,文章可能有点长,但是希望大家可以阅读完,增长自己的知识,最重要的是希望对各位有所帮助,可以解决了您的问

2025年7月23日 00:15

personality development课文翻译(哪位仁兄帮忙写写一片英语作文啊,题名《个性发展》,拜托啦~~~)

personality development课文翻译(哪位仁兄帮忙写写一片英语作文啊,题名《个性发展》,拜托啦~~~)

大家好,personality development课文翻译相信很多的网友都不是很明白,包括哪位仁兄帮忙写写一片英语作文啊,题名《个性发展》,拜托啦~~~也是一样,不过没有关系,接下来就来为大家分享关于personality develo

2026年4月29日 13:15

show的用法(show的用法和意思是不是和show off一样啊)

show的用法(show的用法和意思是不是和show off一样啊)

大家好,如果您还对show的用法不太了解,没有关系,今天就由本站为大家分享show的用法的知识,包括show的用法和意思是不是和show off一样啊的问题都会给大家分析到,还望可以解决大家的问题,下面我们就开始吧!本文目录show的用法和

2025年9月7日 05:45

finder图标是哪个(mac有没有类似于“我的电脑”的地方 桌面东西太多了不知道放哪)

finder图标是哪个(mac有没有类似于“我的电脑”的地方 桌面东西太多了不知道放哪)

其实finder图标是哪个的问题并不复杂,但是又很多的朋友都不太了解mac有没有类似于“我的电脑”的地方 桌面东西太多了不知道放哪,因此呢,今天小编就来为大家分享finder图标是哪个的一些知识,希望可以帮助到大家,下面我们一起来看看这个问

2026年6月1日 22:45

directx最新版官方下载(~~~~~Directx 最新版本是多少在那里下载~~~~)

directx最新版官方下载(~~~~~Directx 最新版本是多少在那里下载~~~~)

这篇文章给大家聊聊关于directx最新版官方下载,以及~~~~~Directx 最新版本是多少在那里下载~~~~对应的知识点,希望对各位有所帮助,不要忘了收藏本站哦。本文目录~~~~~Directx 最新版本是多少在那里下载~~~~找不到

2026年1月4日 00:15

php各个版本下载(如何再wamp 下安装多个版本的php)

php各个版本下载(如何再wamp 下安装多个版本的php)

今天给各位分享如何再wamp 下安装多个版本的php的知识,其中也会对如何再wamp 下安装多个版本的php进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!本文目录如何再wamp 下安装多个版本的phpPHPNow升级

2026年7月26日 21:00

associate的名词怎么写(associate是可数名词吗)

associate的名词怎么写(associate是可数名词吗)

大家好,如果您还对associate的名词怎么写不太了解,没有关系,今天就由本站为大家分享associate的名词怎么写的知识,包括associate是可数名词吗的问题都会给大家分析到,还望可以解决大家的问题,下面我们就开始吧!本文目录as

2026年7月29日 01:15

miui进程管理(小米怎么查看正在运行的进程)

miui进程管理(小米怎么查看正在运行的进程)

其实miui进程管理的问题并不复杂,但是又很多的朋友都不太了解小米怎么查看正在运行的进程,因此呢,今天小编就来为大家分享miui进程管理的一些知识,希望可以帮助到大家,下面我们一起来看看这个问题的分析吧!本文目录小米怎么查看正在运行的进程m

2026年1月27日 10:00

取字符串的某一部分(C语言如何实现取字符串的一部分)

取字符串的某一部分(C语言如何实现取字符串的一部分)

大家好,关于取字符串的某一部分很多朋友都还不太明白,不过没关系,因为今天小编就来为大家分享关于C语言如何实现取字符串的一部分的知识点,相信应该可以解决大家的一些困惑和问题,如果碰巧可以解决您的问题,还望关注下本站哦,希望对各位有所帮助!本文

2025年10月3日 14:15

java基础学完了学什么(java基础学习完了该学习什么)

java基础学完了学什么(java基础学习完了该学习什么)

其实java基础学完了学什么的问题并不复杂,但是又很多的朋友都不太了解java基础学习完了该学习什么,因此呢,今天小编就来为大家分享java基础学完了学什么的一些知识,希望可以帮助到大家,下面我们一起来看看这个问题的分析吧!本文目录java

2026年1月24日 07:00

datagridview删除(winform怎么删除datagridview选中的一行并更)

datagridview删除(winform怎么删除datagridview选中的一行并更)

本篇文章给大家谈谈datagridview删除,以及winform怎么删除datagridview选中的一行并更对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。本文目录winform怎么删除datagridview选中的一行并更在c#

2026年3月29日 09:30

修改字段数据类型的sql语句(plsql字段类型修改)

修改字段数据类型的sql语句(plsql字段类型修改)

大家好,修改字段数据类型的sql语句相信很多的网友都不是很明白,包括plsql字段类型修改也是一样,不过没有关系,接下来就来为大家分享关于修改字段数据类型的sql语句和plsql字段类型修改的一些知识点,大家可以关注收藏,免得下次来找不到哦

2026年1月20日 00:00

近期文章

本站热文

electronics软件(labcenter electronics是什么软件)
2025-05-22 23:45:02 浏览:134
博客是微博吗(博客是微博吗)
2025-05-22 22:45:01 浏览:111
diversity and distribution(悬赏英语短文)
2025-05-23 16:15:02 浏览:107
ios软件开发前景(iOS就业前景怎么样)
2025-05-22 23:00:01 浏览:102
next month(有The next month这个单词吗,和 next month有什么区别)
2025-05-23 02:30:01 浏览:102
patron(patron是什么意思)
2025-05-23 10:30:02 浏览:95
标签列表

热门搜索