--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语句有什么语法区别等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)