一个简单的sql存储过程

原创 2004年09月19日 15:48:00

来自:http://community.csdn.net/Expert/topic/3381/3381415.xml?temp=.4722254

--测试:
--方案主、从表
--主表 P-master
create table Pmaster( Pcode VARCHAR(5),Pname varchar(5),Pstatus varchar(1))
insert into Pmaster
select 'P001','PA','1' UNION ALL
select 'P002','PB','0'
--从表 P-detail
create table Pdetail(Pcode  varchar(5), PID varchar(5), Mcode varchar(5),Mtype varchar(1),[Money] int)
insert into Pdetail
select 'P001','01','m1','2',560 UNION ALL
select 'P001','02','m2','3',480 UNION ALL
select 'P001','03','m3','2',360 UNION ALL
select 'P001','04','m4','3',670


--借支主、从表
--主表  Lmaster
create table  Lmaster(Lcode varchar(5),Pcode VARCHAR(4),Ltpye VARCHAR(1))
INSERT INTO Lmaster
select 'L001','P001','2' union all                               
select  'L002','P001','3' union all   
select  'L003','P001','2' union all 
select  'L004','P001','3'                 
--从表  Ldetail
create table Ldetail(Lcode varchar(5),LID varchar(5),Lmoney int )
insert into Ldetail
select 'L001','01', 51 union all
select 'L001','02', 41 union all
select 'L002','03', 31 union all
select 'L002','04', 61
--报销主、从表
--主表  Amaster
create table Amaster(Acode varchar(5),Pcode varchar(5),Atpye varchar(1))
insert into Amaster
select 'A001','P001','2' union all                               
select 'A002','P001','3' union all  
select 'A003','P001','2' union all
select 'A004','P001','3'                 
--从表  Adetail 
create table Adetail(Acode varchar(5),AID varchar(5),Amoney int)
insert into Adetail
select 'A001','01', 52 union all  
select 'A001','02', 42 union all
select 'A002','03', 32 union all
select 'A002','04', 62 

--查询
declare @a varchar(5)
set @a='P001'                  
select distinct a.Pcode,b.mtype,[money]=sum(b.[money])
into #pt
from Pmaster a inner join Pdetail b on a.Pcode=b.Pcode
where a.Pstatus='1'
group by b.mtype,a.Pcode
select distinct a.Ltpye,lmoney=sum(b.lmoney)
into #lt
from lmaster a inner join ldetail b on a.Lcode=b.Lcode
group by a.Ltpye

select a.atpye,Amoney=sum(b.amoney)
into #at
from Amaster a inner join Adetail b on a.Acode=b.Acode
group by a.atpye

select a.Pcode,a.mtype,金额=a.money-b.lmoney+c.amoney
into #t
from #pt a inner join #lt b on a.mtype=b.Ltpye inner join #at c on a.mtype=c.atpye
      
select Pcode=max(Pcode)
       ,可借支的现金的总金额=sum(case mtype when 2 then 金额 else 0 end)
       ,可借支的产品的总金额=sum(case mtype when 3 then 金额 else 0 end)
from #t  
where Pcode=@a

drop table  Pmaster,Pdetail,Lmaster,Ldetail,Amaster,Adetail,#pt,#lt,#at,#t

--运行结果:

Pcode 可借支的现金的总金额  可借支的产品的总金额 
----- ----------- -----------
P001  922         1152

 

sql存储过程几个简单例子(一)

导读:sql存储是数据库操作过程中比较重要的一个环节,对于一些初学者来说也是比较抽象难理解的,本文我将通过几个实例来解析数据库中的sql存储过程,这样就将抽象的事物形象化,比较容易理解。 例1: ...
  • imxiangzi
  • imxiangzi
  • 2015年01月18日 09:44
  • 2092

分页存储过程--一个简单的SQL存储过程

运用存储过程可以对数据进行分页,这样提起出的数据也能快速在页面上绑定显示: create procedure getDate( @size int,--页面条数大小 @currentPage--当前的...
  • hexiongtao
  • hexiongtao
  • 2008年05月21日 21:57
  • 271

简单的SQL存储过程

Create Procedure PrGetMoreName AS --AS不能少 --创建临时表(存储过程创建的临时表,执行完自动删除) Create table #temp ( ...
  • forrest23
  • forrest23
  • 2010年03月26日 15:02
  • 1445

简单的SQL存储过程分页

USE [testActice] GO /****** Object: StoredProcedure [dbo].[getpagelist] Script Date: 06/12/2017 ...
  • yeizt520
  • yeizt520
  • 2017年06月12日 18:03
  • 90

SQL存储过程的简单应用

在button中的代码 Dim bh As String bh = InputBox("请输入要删除的行数") Dim sqlcom As New SqlC...
  • qiuye14
  • qiuye14
  • 2011年07月11日 13:31
  • 267

在存储过程中删除表的列

      在动态创建数据库的表的字段时,如果该字段的“是否为空”的属性为非空,且该表与其他表有联系,那么动态删除该列可能失败。报错原因因为有一个或多个对象访问此列。解决方法是先删除在该列上的约束,然...
  • scucj
  • scucj
  • 2006年07月14日 09:37
  • 2193

sql存储过程几个简单例子

导读:sql存储是数据库操作过程中比较重要的一个环节,对于一些初学者来说也是比较抽象难理解的,本文我将通过几个实例来解析数据库中的sql存储过程,这样就将抽象的事物形象化,比较容易理解。 例1:...
  • qq819632865
  • qq819632865
  • 2017年01月06日 01:23
  • 43

sql存储过程简单例子

例1: create proc proc_stu @sname varchar(20), @pwd varchar(20) as select * from ren where sna...
  • a3060858469
  • a3060858469
  • 2018年02月09日 21:09
  • 25

知识整理:sql 存储过程命名规范

 在本文中,此示例标准蓝图的存储过程命名方法只适用于SQL内部,假如你正在创建一个新的存储过程,或是发现一个没有按照这个标准构造的存储过程,即可以参考使用这个标准。  注释:假如存储过程以sp_ 为前...
  • he21he21
  • he21he21
  • 2009年02月04日 11:02
  • 3896

简单SQL存储过程实例

实例1:只返回单一记录集的存储过程。 银行存款表(bankMoney)的内容如下 Id userID Sex Money 001 Zhangsan 男 30 ...
  • brk1985
  • brk1985
  • 2015年04月12日 23:36
  • 299
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:一个简单的sql存储过程
举报原因:
原因补充:

(最多只允许输入30个字)