定义存储过程sql,存储过程查询语句

seosqwseo1个月前 (08-20)测评日记20

一、创建存储过程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自动回滚事务。如果不关闭,将造成数据丢失,而其他事务将在这个未关闭的连接上执行,造成资源锁定,甚至服务器停止响应。

相关文章

海信电视55E5H55英寸4K超清使用感受如何

海信电视55E5H55英寸4K超清使用感受如何

很多小伙伴在关注海信电视55E5H55英寸4K超清怎么样?质量好不好?使用测评如何?本文综合已购用户的客观使用分享和相应的优惠信息,为大家推荐一款高性价比的产品,一起来看看...

SHARP夏普4T-Z70B5DA70英寸口碑怎么样

SHARP夏普4T-Z70B5DA70英寸口碑怎么样

很多小伙伴在关注SHARP夏普4T-Z70B5DA70英寸怎么样?质量好不好?使用测评如何?本文综合已购用户的客观使用分享和相应的优惠信息,为大家推荐一款高性价比的产品,一...

小米电视ES系列质量好不好

小米电视ES系列质量好不好

很多小伙伴在关注小米电视ES系列怎么样?质量好不好?使用测评如何?本文综合已购用户的客观使用分享和相应的优惠信息,为大家推荐一款高性价比的产品,一起来看看吧。...

海信游戏旗舰电视65E35H价格多少钱

海信游戏旗舰电视65E35H价格多少钱

很多小伙伴在关注海信游戏旗舰电视65E35H怎么样?质量好不好?使用测评如何?本文综合已购用户的客观使用分享和相应的优惠信息,为大家推荐一款高性价比的产品,一起来看看吧。...

南孚5号电池40粒五号碱性质量测评好不好

南孚5号电池40粒五号碱性质量测评好不好

很多小伙伴在关注南孚5号电池40粒五号碱性怎么样?质量好不好?使用测评如何?本文综合已购用户的客观使用分享和相应的优惠信息,为大家推荐一款高性价比的产品,一起来看看吧。...

大疆DJI质量测评好不好

大疆DJI质量测评好不好

很多小伙伴在关注大疆DJI怎么样?质量好不好?使用测评如何?本文综合已购用户的客观使用分享和相应的优惠信息,为大家推荐一款高性价比的产品,一起来看看吧。...