用SQL语句创建存储过程

用SQL语句创建存储过程,第1张

--1、创建存储过程--

if

exists

(select

from

sysobjects

where

name='info1')

drop

procedure

info1

go

create

procedure

info1

@sname

varcher(20),

as

begin

declear

@xinxi

varcher(20)

set

@xinxi='select

学号,姓名,出身日期,系别(注,列名自己设置)

from

student

where

姓名=@sname'

print'@xinxi';

end

--调用存储过程1--

exec

info1

@sname=姓名

后面的自己参考,可以写出来

--[p2]

create proc p2 @blh char(6),@odate datetime

as

select 病历号,入院时间 from 诊疗情况

where 病历号=@blh and 入院时间=@odate

go

--2

create proc 存储过程名1 @blh char(6),@outdate datetime

as

update 诊疗情况 set 出院时间=getdate() where 病历号=@blh

exec p2 @blh,@outdate

commit

go

--修改病历号为A01101 ,入院时间为‘2012-5-1’的病人出院时间

exec 存储过程名1 'A01101','2012-5-1'

go

--[p3]:

create proc p3 @dname varchar(10),@avg_age int output

as

select @avg_age=avg(病人年龄)

from 病人,诊疗情况,医生

where 医生医生号=诊疗情况医生号

and 诊疗情况病历号=病人病历号

and 医生医生姓名=@dname

go

--3

create proc 存储过程名2 @dname varchar(10)

as

declare @avgage int

exec p3 @dname,@avg_age=@avgage output

select 病人病人姓名,病人病人年龄

from 病人,诊疗情况,医生

where 医生医生号=诊疗情况医生号

and 诊疗情况病历号=病人病历号

and 医生医生姓名=@dname

and 病人病人年龄>@avgage

go

存储过程和一般sql的区别就是,存储过程支持变量和判断循环之类的,你可以把一个存储过程想象为一个小的软件,这个小软件帮你处理一些复杂的sql运算。

至于说存储过程查询语句更快,是因为,存储过程的执行是在服务器上,只需要传递几个简单的参数就可以,减少了网络通讯。所以比起一般程序中写的查询语句来说更快一些。

基本上就是这些

希望可以帮助你理解存储过程。

这样写吧,最好是搞模糊查询,不要搞你那样的精确查询。

create proc Get_Stu_Search

@name varchar(100),

@tel varchar(100)

as

begin

declare @sql varchar(3000)

set @sql='select from stu where 1=1'

if len(@name)>0

begin

set @sql=@sql+' and [name] like ''%'+@name+'%'''

end

if len(@tel)>0

begin

set @sql=@sql+' and tel like ''%'+@tel+'%'''

end

exec(@sql)

end

--调用方法:打引号的是两个参数,知道吧

-- Get_Stu_Search 'aa','120'

SQL server中如何存储:

首先准备数据,测试存储过程

use ssqadm;

创建测试books表

create table books_test ( book_id int identity(1,1) primary key,

book_name varchar(20),book_price float,book_auth varchar(10));

插入测试数据

insert into books_test (book_name,book_price,book_auth)values

('论语',256,'孔子'),

('天龙八部',256,'金庸'),

('雪山飞狐',327,'金庸'),

('平凡的世界',358,'路遥'),

('史记',548,'司马迁');

select from books_test;/

创建无参存储过程

if (exists (select from sysobjects where name = 'getAllBooks'))

drop proc getAllBooks

go

create procedure getAllBooks

as

begin

select from books_test;

调用,执行存储过程

exec getAllBooks;

end

go

修改存储过程

alter procedure getallbooks

as

select book_name from books_test;

修改存储过程的名称

sp_rename getallbooks,proc_get_allbooks;

go

exec proc_get_allbooks;

go

创建带参数的存储过程

use ssqadm

go

if (exists (select from sysobjects where name = 'searchbooks'))

drop proc searchbooks

exec searchbooks

执行存储searchbooks得到如下结果:

go

create procedure searchbooks (@bookid int)--括号里面是

as

begin

declare  @book_id int;定义一个标量变量,只是保证存储过程的完整性,在本存储是多此一举的。

set @book_id = @bookid;

select from books_test where book_id = @book_id;

end;

go

-- exec searchbooks

执行存储searchbooks得到如下结果:

创建带两个参数的存储过程

use ssqadm

go

if (exists (select from sysobjects where name = 'book_test2'))

drop proc book_test2

exec book_test2

执行存储book_test2得到如下结果:

go

create procedure book_test2

(@bookid int,@bookname varchar(20))括号里面是

as

begin

declare  @book_id int;

定义一个标量变量,只是保证存储过程的完整性,在本存储是多此一举的。

declare  @book_name varchar(20);

set @book_id = @bookid;

set @book_name = @bookname;

select from books_test where book_id =

@book_id and book_name = @book_name;

end;

go

exec book_test2

扩展资料:

SQL Server中查询存储命令子句:

USE [SSQADM]  

Use 是跳转到哪个数据库,对这个数据库进行 *** 作。

GO     

GO向 SQL Server 实用工具发出一批 Transact-SQL 语句结束的信号,相当于提交上面的SQL语句。

GO是把t-sql语句分批次执行

(一步成功了才会执行下一步,即一步一个GO)

/ Object:  StoredProcedure [dbo][PROC_four_five_hr]

Script Date: 07/30/2018 13:44:55 /

SET ANSI_NULLS ONGOSET QUOTED_IDENTIFIER ON

1create procedure print_std_info1 @name varchar(8) as select 学号,姓名,系别,出生日期 from student where 姓名=@name execute print_std_info1 '高春接' 2create procedure print_std_info2 @name varchar(8), @num varchar(8) output, @xb varchar(8) output, @birthdate datetime output as select @num=学号,@name=姓名,@xb=系别,@birthdate=出生日期 from student where 姓名=@name go declare @num varchar(8) ,@name varchar(8),@xb varchar(8),@birthdate datetime set @name='高春接' execute print_std_info1 @name,@num output,@xb output,@birthdate output print'姓名:'+@name print '学号:'+@num print'系别:'+@xb print '出生日期:'+convert(varchar(8),@birthdate) 3create proc p_add @n int,@sum int output as declare @i int set @i=1 set @sum=0 while @i<=@n begin set @sum=@sum+@i set @i=@i+1 end go declare @n int,@sum int set @n=100 exec p_add @n,@sum output print '累加和为:'+cast(@sum as varchar(5))

以上就是关于用SQL语句创建存储过程全部的内容,包括:用SQL语句创建存储过程、sql的创建存储语句怎么写啊、请问存储过程和一般sql语句有什么语法区别等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/10219160.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-06
下一篇 2023-05-06

发表评论

登录后才能评论

评论列表(0条)

保存