文档章节

SqlServer和Oracle中一些常用的sql语句6 存储过程

深圳大道
 深圳大道
发布于 2016/12/29 15:38
字数 792
阅读 2
收藏 0
--不带参数的存储过程
CREATE procedure proc_sql1
as
begin
  declare @i int
  set @i=0
  while @i<26
       begin
         print char(ascii('a')+@i)+'的ASCII码是:'+cast(ascii('a')+@i as varchar(50))
         set @i=@i+1
       end
end

execute proc_sql1

--数据查询不带参数的储存过程
create procedure  proc_sql4
as
begin
   select * from 职工 where 姓名 like '%张%'
   select * from 仓库 where 仓库号 in(
     select 仓库号 from 职工 where 姓名 like '%张%' )
end
go
execute proc_sql4

--带有输入参数的存储过程
create proc proc_sql5
 @x1 int,
 @x2 int,
 @x3 int
as
begin
 declare @max int
 if @x1>@x2
   set @max=@x1
 else
  set @max=@x2
 
 if @x3>@max
   set @max=@x3
 
 print '3个数中最大的数是:'+cast(@max as varchar(50))
end

execute proc_sql5 15,28,39

--带有输入参数的查询存储过程
create proc proc_sql7 
  @mingz int,
  @maxgz int
 as
  select * from 职工 where 工资 between @mingz and @maxgz

execute proc_sql7 1500,1800

--带输入和输出参数的存储过程
create proc proc_sql9
  @changkuhao varchar(50),
  @maxgz  int output,
  @avggz  real output
as
 begin
  select * from 职工 where 仓库号=@changkuhao
  select @maxgz=max(工资) from 职工 where 仓库号=@changkuhao
  select @avggz=avg(工资) from 职工 where 仓库号=@changkuhao
end

--显示指定仓库号的职工信息及该仓库号的最大工资和平均工资
declare @x1 int,@x2 real
execute proc_sql9 'wh1',@x1 output,@x2 output
select @x1 as wh1职工最大工资,@x2 as wh1职工平均工资


---带登陆判断功能的存储过程
create proc proc_sql10 
 @hyuser varchar(50),
 @hypwd  varchar(50)
as
begin
declare @msg varchar(50)
 if @hyuser='hystu1'
    begin
      if @hypwd='111'
        set @msg='用户名与密码正确,成功登录!'
      else
        set @msg='密码不正确,请重新输入!'
    end
 else if @hyuser='hystu2'
    begin
      if @hypwd='222'
        set @msg='用户名与密码正确,成功登录!'
      else
        set @msg='密码不正确,请重新输入!'
    end
 else if @hyuser='hystu3'
    begin
      if @hypwd='333'
        set @msg='用户名与密码正确,成功登录!'
      else
        set @msg='密码不正确,请重新输入!'
    end
 else
   set @msg='用户名不正确,请重新输入!'
print @msg
end

execute proc_sql10 'hystu1','111'


--带有判断条件的插入功能的存储过程
create proc proc_sql13
 @zghao varchar(30),
 @ckhao varchar(30),
 @sname varchar(50),
 @sex   varchar(10),
 @gz    int
as
 begin
	if exists(select * from 职工 where 职工号=@zghao)
       print '该职工已存在,请重新输入职工号!'
    else
       begin
         if exists(select * from 仓库 where 仓库号=@ckhao)
           begin
            insert into 职工(职工号,仓库号,姓名,性别,工资) values(@zghao,@ckhao,@sname,@sex,@gz)
            print '成功的插入一条记录'
           end  
       else
           print '输入的仓库号不合法,请重新输入仓库号!'
       end
  end
GO

execute proc_sql13 'zg1','wh1','张平','女',1350

execute proc_sql13 'zg42','wh11','张平','女',1350

execute proc_sql13 'zg42','wh1','张平','女',1350
ALTER PROCEDURE [dbo].[sp_TNotePost]
 @blockID INT,
 @title nvarchar (200),
 @content TEXT,
 @userID bigint,
 @ip nvarchar (50),
 @Result int out 
AS
BEGIN
	DECLARE @fdate date,@id bigint, @fcontent nvarchar(200),@iErrorCount int 
	BEGIN TRAN
		SET @fdate = GETDATE()
		--插入新帖
		INSERT INTO T_Note (blockID,title,content,userID,ip) VALUES	(@blockID,@title,@content,@userID,@ip)
		SET @iErrorCount=@iErrorCount+@@error
		SET @id = @@IDENTITY 
		select @fcontent=SUBSTRING(content,0,100) from T_Note where id=@id
		--更新版块信息
		UPDATE T_Topic SET num = num + 1,lastNoteID =@id,lastNoteDate=@fdate,lastNoteTitle=@fcontent where blockID=@blockID
		SET @iErrorCount=@iErrorCount+@@error
		--更新个人其他基本信息
		UPDATE T_User_Other  SET noteCount=noteCount+1 ,lastNoteTime=@fdate,lastNoteTitle=@fcontent where userID=@userID
		SET @iErrorCount=@iErrorCount+@@error
IF @iErrorCount <> 0  --发生错误  
		BEGIN  
				ROLLBACK TRAN  
				SET @Result=0  
		END  
ELSE  
		BEGIN  
				COMMIT TRAN  
				SET @Result=@id    --执行成功  
		END
END

本文转载自:http://blog.csdn.net/smartsmile2012/article/details/9161227

深圳大道
粉丝 3
博文 877
码字总数 0
作品 0
深圳
架构师
私信 提问
数据库访问之Sqlite的不同之处

在我的Winform开发框架中,底层的数据访问支持多种不同的数据库,在数据库访问的开发过程中,发现Sqlite多数情况下,操作都和SqlServer或者说是和标准Sql差不多的。当然,Sqlite本身也有一些...

长平狐
2012/08/22
107
0
数据库访问之Sqlite的不同之处

在我的Winform开发框架中,底层的数据访问支持多种不同的数据库,在数据库访问的开发过程中,发现Sqlite多数情况下,操作都和SqlServer或者说是和标准Sql差不多的。当然,Sqlite本身也有一些...

长平狐
2012/06/11
80
0
基于AEAI ESB的处理大字段

1.背景 数据迁移中大字段一直是个比较头疼的问题,一旦大字段中值大于32K的话就无法用sql语句来实现插入和更新。通用的解决办法一般有两种:存储过程和JDBC。下面主要总结下基于AEAI ESB用J...

数通畅联
2015/01/22
182
0
jmeter(八)-JDBC请求(sqlserver)

做JDBC请求,首先要了解这个JDBC对象是什么,然后寻找响应的数据库连接URL和数据库驱动。 数据库URL:jdbc:sqlserver://200.99.197.190:1433;databaseName=ebank 数据库驱动:com.microsoft...

劲风online
2015/01/08
332
0
小觑数据库(SqlServer)查询语句执行过程

近年来,越来越多的NoSql产品不断的以技术革命的者的身份跳出来:"你看哥是多么的快,你们关型型数据库真是战五渣阿"。是的,高性能的场景下NoSql真的很出彩。而我们关系型数据库只能在墙角哭...

Yunanw
2014/04/14
552
4

没有更多内容

加载失败,请刷新页面

加载更多

mysql-connector-java升级到8.0后保存时间到数据库出现了时差

在一个新项目中用到了新版的mysql jdbc 驱动 <dependency>     <groupId>mysql</groupId>     <artifactId>mysql-connector-java</artifactId>     <version>8.0.18</version> ......

ValSong
32分钟前
4
0
Spring Boot 如何部署到 Linux 中的服务

打包完成后的 Spring Boot 程序如何部署到 Linux 上的服务? 你可以参考官方的有关部署 Spring Boot 为 Linux 服务的文档。 文档链接如下: https://docs.ossez.com/spring-boot-docs/docs/r...

honeymoose
34分钟前
5
0
Spring Boot 2 实战:使用 Spring Boot Admin 监控你的应用

1. 前言 生产上对 Web 应用 的监控是十分必要的。我们可以近乎实时来对应用的健康、性能等其他指标进行监控来及时应对一些突发情况。避免一些故障的发生。对于 Spring Boot 应用来说我们可以...

码农小胖哥
今天
6
0
ZetCode 教程翻译计划正式启动 | ApacheCN

原文:ZetCode 协议:CC BY-NC-SA 4.0 欢迎任何人参与和完善:一个人可以走的很快,但是一群人却可以走的更远。 ApacheCN 学习资源 贡献指南 本项目需要校对,欢迎大家提交 Pull Request。 ...

ApacheCN_飞龙
今天
4
0
CSS定位

CSS定位 relative相对定位 absolute绝对定位 fixed和sticky及zIndex relative相对定位 position特性:css position属性用于指定一个元素在文档中的定位方式。top、right、bottom、left属性则...

studywin
今天
7
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部