问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

存储过程的结构是什么样的

发布网友 发布时间:2022-06-17 09:58

我来回答

1个回答

热心网友 时间:2023-11-17 22:09

  CREATE PROCEDURE [拥有者.]存储过程名[;程序编号]
  [(参数#1,…参数#1024)]
  [WITH
  {RECOMPILE | ENCRYPTION | RECOMPILE, ENCRYPTION}
  ]
  [FOR REPLICATION]
  AS 程序行
  其中存储过程名不能超过128个字。每个存储过程中最多设定1024个参数
  (SQL Server 7.0以上版本),参数的使用方法如下:
  @参数名 数据类型 [VARYING] [=内定值] [OUTPUT]
  每个参数名前要有一个“@”符号,每一个存储过程的参数仅为该程序内部使用,参数的类型除了IMAGE外,其他SQL Server所支持的数据类型都可使用。
  [=内定值]相当于我们在建立数据库时设定一个字段的默认值,这里是为这个参数设定默认值。[OUTPUT]是用来指定该参数是既有输入又有输出值的,也就是在调用了这个存储过程时,如果所指定的参数值是我们需要输入的参数,同时也需要在结果中输出的,则该项必须为OUTPUT,而如果只是做输出参数用,可以用CURSOR,同时在使用该参数时,必须指定VARYING和OUTPUT这两个语句。
  例子:
  CREATE PROCEDURE order_tot_amt @o_id int,@p_tot int output AS
  SELECT @p_tot = sum(Unitprice*Quantity)
  FROM orderdetails
  WHERE ordered=@o_id
  例子说明:
  该例子是建立一个简单的存储过程order_tot_amt,这个存储过程根据用户输入的定单ID号码(@o_id),由定单明细表 (orderdetails)中计算该定单销售总额[单价(Unitprice)*数量(Quantity)],这一金额通过@p_tot这一参数输出给调用这一存储过程的程序。

  Create procere procee_name
  [@parameter data_type][output]
  [with]{recompile|encryption}
  as
  sql_statement
  解释:
  output:表示此参数是可传回的
  with {recompile|encryption}
  recompile:表示每次执行此存储过程时都重新编译一次
  encryption:所创建的存储过程的内容会被加密
  如:
  表book的内容如下
  编号 书名 价格
  001 C语言入门 $30
  002 PowerBuilder报表开发 $52
  实例1:查询表Book的内容的存储过程
  create proc query_book
  as
  select * from book
  go
  exec query_book
  实例2:
  加入一笔记录到表book,并查询此表中所有书籍的总金额
  Create proc insert_book
  @param1 char(10),@param2 varchar(20),@param3 money,@param4 money output
  with encryption ---------加密
  as
  insert book(编号,书名,价格) Values(@param1,@param2,@param3)
  select @param4=sum(价格) from book
  go
  执行例子:
  declare @total_price money
  exec insert_book '003','Delphi 控件开发指南',$100,@total_price
  print '总金额为'+convert(varchar,@total_price)
  go
  存储过程的3种传回值:
  1)、以Return传回整数
  2)、以output格式传回参数
  3)、Recordset
  传回值的区别:
  output和return都可在批次程式中用变量接收,而recordset则传回到执行批次的客户端中。
  实例3:
  设有两个表为Proct,Order,其表内容如下:
  Proct
  产品编号 产品名称 客户订数
  001 钢笔 30
  002 毛笔 50
  003 铅笔 100
  Order
  产品编号 客户名 客户订金
  001 南山区 $30
  002 罗湖区 $50
  003 宝安区 $4
  请实现按编号为连接条件,将两个表连接成一个临时表,该表只含编号.产品名.客户名.订金.总金额,
  总金额=订金*订数,临时表放在存储过程中
  代码如下:
  Create proc temp_sale
  as
  select a.产品编号,a.产品名称,b.客户名,b.客户订金,a.客户订数* b.客户订金 as总金额
  into #temptable from Proct a inner join Order b on a.产品编号=b.产品编号
  if @@error=0
  print 'Good'
  else
  &n bsp; print 'Fail'
  go
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
奥迪a6l怎么用手机连接音响放歌,我的是华为 奥迪a6l蓝牙连接了,听歌没声音 2009年6月在农业银行办理30万等额本息为10年的商业房贷,7折,现在月供... 存量房贷七折七折政策 ...在农业银行贷款27万,等额本息打七折利率按揭20年,现在的利率每月应还... 我是第一套房,在农业银行不是公积金贷款27万元20年付清利息怎么算法... 在成都交通违章网上怎么办理的 成都违章罚款网上怎么交 成都交通违章罚款在哪里交 成都违章停车可以网上交罚款吗 长相普通的女生在恋爱中会有优势吗? 求P图大神把下面三张照片中的背景去掉或者P上好看点的背景也行。谢谢了! 求P图大神帮忙换个背景,场景P的好看点,艺术点! 荒野乱斗拼音怎么打 荒野求生的拼音 杏梅干的杏核的杏仁能吃吗但是我以吃一个杏仁会有什么事吗? 放了八年的杏核还能吃吗 想请高人算下我的运势,爱情观。 打开微信一直都是品多多广告图反不回去怎么办? Thinkpad下载的PS怎么在桌面上说用不了 我下载的PHOTOSHOP为什么不显示在桌面上 帮忙看看今年的爱情,事业运势! 中国移动的积分怎么兑换成话费 中国移动话费积分怎样兑换成话费 兰博基尼爱马仕 兰博基尼至今所有概念车 兰博基尼 concepts 的性能参数 一个离婚女人的忠告:“婚姻中的哪些难关,熬过了就是一辈子”? 一个43岁的离婚女人,给所有女人的恋爱忠告,你知道什么吗? 怎样看双方的星座爱情运势? 那些容易一见钟情的人,身上都有哪些共同的特点? 恋爱为什么总是女生占绝对优势? 首先说这个问题并不是肤浅的问题,我们应该从现象看本质 去哪里看世界杯直播? 芝士扇贝做法 微波炉 种植土豆,老是长很多藤蔓枝条,土豆又小又少,这是怎么回事? 看过你的智商。。。为何放弃治疗 【这句话的英文是怎样的?】【越快越好,谢谢各位老师了】 为什么放弃治疗的用法 只有放弃治疗才能达到人生的巅峰 英语怎么翻译 不要放弃治疗 用英语怎么说 “为什么放弃治疗”这句话是什么意思 “病得不轻,不要放弃治疗”求翻译成英语 为什么放弃治疗? 那些长得好看的人,都是怎么样发现自己相貌的优势,有没有一个觉醒的过程? 科学研究纲领方法论的简要介绍 心脏的位置在哪里? 网上哪可以看2010世界杯直播 在哪可以看到世界杯直播和即时评论的? 骗婚骗财法律怎么判刑 QQ直播哪能看世界杯直播的啊 “善恶看眉眼贫富看马桩”,这句话有没有道理?