定义存储过程sql,存储过程查询语句
一、创建存储过程sql语句
1)过程名
存储过程的名称,默认在当前数据库中创建。若需要在特定数据库中创建存储过程,则要在名称前面加上数据库的名称,即db_name.sp_name。
需要注意的是,名称应当尽量避免选取与MySQL内置函数相同的名称,否则会发生错误。
2)过程参数
存储过程的参数列表。其中,为参数名,为参数的类型(可以是任何有效的MySQL数据类型)。当有多个参数时,参数列表中彼此间用逗号分隔。存储过程可以没有参数(此时存储过程的名称后仍需加上一对括号),也可以有1个或多个参数。
MySQL存储过程支持三种类型的参数,即输入参数、输出参数和输入/输出参数,分别用IN、OUT和INOUT三个关键字标识。其中,输入参数可以传递给一个存储过程,输出参数用于存储过程需要返回一个*作结果的情形,而输入/输出参数既可以充当输入参数也可以充当输出参数。
二、SQL Server的存储过程怎么写
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
('论语',25.6,'孔子'),
('天龙八部',25.6,'金庸'),
('雪山飞狐',32.7,'金庸'),
('平凡的世界',35.8,'路遥'),
('史记',54.8,'司马迁');
select* from books_test;*/
创建无参存储过程
if(exists(select* from sys.objects 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 sys.objects 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 sys.objects 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
三、sql***存储过程查询语句
use MYTextDB----------使用MYTextDB数据库
CREATE PROCEDURE dbo.getUserList------------创建存储过程
as
set nocount on
begin-------------开始
select* from dbo.tbl_User-------------------定义SQL语句
end
go
EXEC dbo.getUserList---------------执行存储过程
在.NET的代码中调用:
'**通过Command对象调用存储过程**
DIM MyComm,MyRst
Set MyComm= Server.CreateObject("ADODB.Command")
MyComm.ActiveConnection= MyConStr'MyConStr是数据库连接字串
MyComm.CommandText="getUserList"'指定存储过程名
MyComm.CommandType= 4'表明这是一个存储过程
MyComm.Prepared= true'要求将SQL命令先行编译
Set MyRst= MyComm.Execute
Set MyComm= Nothing
存储过程取得的记录集赋给MyRst,接下来,可以对MyRst进行*作。
在以上代码中,CommandType属性表明请求的类型,取值及说明如下:
-1表明CommandText参数的类型无法确定
1表明CommandText是一般的命令类型
2表明CommandText参数是一个存在的表名称
4表明CommandText参数是一个存储过程的名称
还可以通过Connection对象或Recordset对象调用存储过程,方法分别如下:
'**通过Connection对象调用存储过程**
DIM MyConn,MyRst
Set MyConn= Server.CreateObject("ADODB.Connection")
MyConn.open MyConStr'MyConStr是数据库连接字串
Set MyRst= MyConn.Execute("getUserList",0,4)'后一个参断含义同CommandType
Set MyConn= Nothing
'**通过Recordset对象调用存储过程**
DIM MyRst
Set MyRst= Server.CreateObject("ADODB.Recordset")
MyRst.open"getUserList",MyConStr,0,1,4
'MyConStr是数据库连接字串,后一个参断含义与CommandType相同
四、sql怎样新建存储过程
一:创建没有参数的存储过程:
CREATE PROCEDURE select_all
AS
BEGIN
SELECT* from T_login1
END
GO
二:创建带参数的存储过程:
CREATE PROCEDURE select_name
@id uniqueidentifier
AS
BEGIN
SELECT* from T_login1 where PSN0001A=@id
END
GO
扩展资料:
创建存储过程的注意事项:
1、保持事务简短,事务越短,越不可能造成阻塞。
2、在事务中尽量避免使用循环while和游标,以及避免采用访问大量行的语句。
3、在启动事务前完成所有的计算和查询等*作,避免同一事务中交错读取和更新。可以使用表变量预先存储数据。即存储过程中查询与更新使用两个事务实现。
4、超时会让事务不执行回滚,超时后如果客户端关闭连接sqlserver自动回滚事务。如果不关闭,将造成数据丢失,而其他事务将在这个未关闭的连接上执行,造成资源锁定,甚至服务器停止响应。