百度
360搜索
搜狗搜索

sql创建存储过程语句,创建存储过程sql语句详细介绍

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

在SQL中存储过程的一般语法是什么?

1、 创建语法
create proc | procedure pro_name
[{@参数数据类型} [=默认值] [output],
{@参数数据类型} [=默认值] [output],
....
]
as
SQL_statements
2、 创建不带参数存储过程
--创建存储过程
if (exists (select * from sys.objects where name = 'proc_get_student'))
drop proc proc_get_student
go
create proc proc_get_student
as
select * from student;
--调用、执行存储过程
exec proc_get_student;
3、 修改存储过程
--修改存储过程
alter proc proc_get_student
as
select * from student;
4、 带参存储过程
--带参存储过程
if (object_id('proc_find_stu', 'P') is not null)
drop proc proc_find_stu
go
create proc proc_find_stu(@startId int, @endId int)
as
select * from student where id between @startId and @endId
go
exec proc_find_stu 2, 4;
5、 带通配符参数存储过程
--带通配符参数存储过程
if (object_id('proc_findStudentByName', 'P') is not null)
drop proc proc_findStudentByName
go
create proc proc_findStudentByName(@name varchar(20) = '%j%', @nextName varchar(20) = '%')
as
select * from student where name like @name and name like @nextName;
go
exec proc_findStudentByName;exec proc_findStudentByName '%o%', 't%';
扩展资料:
SQL存储过程优点:
1、重复使用。存储过程可以重复使用,从而可以减少数据库开发人员的工作量。
2、减少网络流量。存储过程位于服务器上,调用的时候只需要传递存储过程的名称以及参数就可以了,因此降低了网络传输的数据量。
3、安全性。参数化的存储过程可以防止SQL注入式攻击,而且可以将Grant、Deny以及Revoke权限应用于存储过程。
参考资料来源:百度百科—存储过程

创建存储过程sql语句

  1) 过程名
  存储过程的名称,默认在当前数据库中创建。若需要在特定数据库中创建存储过程,则要在名称前面加上数据库的名称,即 db_name.sp_name。
  需要注意的是,名称应当尽量避免选取与 MySQL 内置函数相同的名称,否则会发生错误。
  2) 过程参数
  存储过程的参数列表。其中,

为参数名,

为参数的类型(可以是任何有效的 MySQL 数据类型)。当有多个参数时,参数列表中彼此间用逗号分隔。存储过程可以没有参数(此时存储过程的名称后仍需加上一对括号),也可以有 1 个或多个参数。

  MySQL 存储过程支持三种类型的参数,即输入参数、输出参数和输入/输出参数,分别用 IN、OUT 和 INOUT 三个关键字标识。其中,输入参数可以传递给一个存储过程,输出参数用于存储过程需要返回一个操作结果的情形,而输入/输出参数既可以充当输入参数也可以充当输出参数。

SQL创建的几种存储过程

创建存储过程 表名和比较字段可以做参数的存储过程 Create PROCEDURE sp_getTeacherInfo @TblName nvarchar(30), -- 表名 @CmpStr nvarchar(30), -- 参与比较的值 @TblAtr nvarchar(30) -- 参与比较的字段 AS DECLARE @sql varchar(4000) SET @sql = 'select * from ' + @TblName + ' where ' + @TblAtr + '=' + @CmpStr EXEC (@sql) 表 tbl_TeacherInfo Exec sp_getTeacherInfo 'tbl_TeacherInfo','TeaNo', '07417502' // 注意:像这样的调用是错误的 还原成查询语句 select * from tbl_TeacherInfo where TeaNo = 07417502 之所以没报错,是因为参数'07417502'被误认为了 整型,进行了整数的比较 Exec sp_getTeacherInfo 'tbl_TeacherInfo','Name','楚留香' // 报错 还原成查询语句 select * from tbl_TeacherInfo where TeaNo = 楚留香 // 显然是错误的 正确的调用方法 Exec sp_getTeacherInfo 'tbl_TeacherInfo','Name',"'楚留香' " 还原成查询语句 select * from tbl_TeacherInfo where TeaNo = '楚留香' 常规存储过程的创建 Create PROCEDURE sp_AddRowToLogin @TeaNo nvarchar(100), -- 比较字段 @TeaName nvarchar(100) -- 比较字段 AS insert into tbl_UserLogin values(@TeaNo,@TeaName,@TeaNo,0) 除了指定列其他列都返回的存储过程 CREATE PROCEDURE sp_Alter @TblName nvarchar(30) -- 表名 AS declare @sql varchar(1000) select @sql='select ' select @sql=@sql+name+',' from syscolumns where id=object_id(@TblName) and name not in ('ID','TeaNo') select @sql=left(@sql,len(@sql)-1) select @sql=@sql+' from ' + @TblName exec (@sql) // 除了ID和TeaNo两列不返回,其他都返回

阅读更多 >>>  怎么才会被大数据查到(如何确保自己被大数据系统所追踪?)

mysql如何创建存储过程

存储过程(Stored Procedure):一组可编程的函数,是为了完成特定功能的SQL语句集,经编译创建并保存在数据库中,用户可通过指定存储过程的名字并给定参数(需要时)来调用执行。推荐课程:MySQL教程。优点(为什么要用存储过程?):①将重复性很高的一些操作,封装到一个存储过程中,简化了对这些SQL的调用②批量处理:SQL+循环,减少流量,也就是“跑批”③统一接口,确保数据的安全相对于oracle数据库来说,MySQL的存储过程相对功能较弱,使用较少。一、存储过程的创建和调用>存储过程就是具有名字的一段代码,用来完成一个特定的功能。>创建的存储过程保存在数据库的数据字典中。1、创建存储过程CREATE [DEFINER = { user | CURRENT_USER }]PROCEDURE sp_name ([proc_parameter[,...]]) [characteristic ...] routine_bodyproc_parameter: [ IN | OUT | INOUT ] param_name typecharacteristic: COMMENT 'string' | LANGUAGE SQL | [NOT] DETERMINISTIC | { CONTAINS SQL | NO SQL | READS SQL DATA | MODIFIES SQL DATA } | SQL SECURITY { DEFINER | INVOKER }routine_body:Valid SQL routine statement[begin_label:] BEGIN[statement_list]??END [end_label]#创建数据库,备份数据表用于示例操作mysql> create database db1;mysql> use db1; mysql> create table PLAYERS as select * from TENNIS.PLAYERS;mysql> create table MATCHES as select * from TENNIS.MATCHES;示例:创建一个存储过程,删除给定球员参加的所有比赛mysql> delimiter $$#将语句的结束符号从分号;临时改为两个$$(可以是自定义)mysql> CREATE PROCEDURE delete_matches(IN p_playerno INTEGER) -> BEGIN -> DELETE FROM MATCHES -> WHERE playerno = p_playerno; -> END$$Query OK, 0 rows affected (0.01 sec)mysql> delimiter ;#将语句的结束符号恢复为分号解析:默认情况下,存储过程和默认数据库相关联,如果想指定存储过程创建在某个特定的数据库下,那么在过程名前面加数据库名做前缀;在定义过程时,使用DELIMITER $$ 命令将语句的结束符号从分号 ; 临时改为两个$$,使得过程体中使用的分号被直接传递到服务器,而不会被客户端(如mysql)解释。二、存储过程的参数存储过程可以有0个或多个参数,用于存储过程的定义。3种参数类型:IN输入参数:表示调用者向过程传入值(传入值可以是字面量或变量)OUT输出参数:表示过程向调用者传出值(可以返回多个值)(传出值只能是变量)INOUT输入输出参数:既表示调用者向过程传入值,又表示过程向调用者传出值(值只能是变量)1、in输入参数mysql> delimiter $$mysql> create procedure in_param(in p_in int) -> begin -> select p_in; -> set p_in=2; -> select P_in; -> end$$mysql> delimiter ;mysql> set @p_in=1;mysql> call in_param(@p_in);+------+| p_in |+------+| 1 |+------++------+| P_in |+------+| 2 |+------+mysql> select @p_in;+-------+| @p_in |+-------+| 1 |+-------+#以上可以看出,p_in在存储过程中被修改,但并不影响@p_id的值,因为前者为局部变量、后者为全局变量。2、out输出参数mysql> delimiter //mysql> create procedure out_param(out p_out int) -> begin -> select p_out; -> set p_out=2; -> select p_out; -> end -> //mysql> delimiter ;mysql> set @p_out=1;mysql> call out_param(@p_out);+-------+| p_out |+-------+| NULL |+-------+#因为out是向调用者输出参数,不接收输入的参数,所以存储过程里的p_out为null+-------+| p_out |+-------+| 2 |+-------+mysql> select @p_out;+--------+| @p_out |+--------+| 2 |+--------+#调用了out_param存储过程,输出参数,改变了p_out变量的值3、inout输入参数mysql> delimiter $$mysql> create procedure inout_param(inout p_inout int) -> begin -> select p_inout; -> set p_inout=2; -> select p_inout; -> end -> $$mysql> delimiter ;mysql> set @p_inout=1;mysql> call inout_param(@p_inout);+---------+| p_inout |+---------+| 1 |+---------++---------+| p_inout |+---------+| 2 |+---------+mysql> select @p_inout;+----------+| @p_inout |+----------+| 2 |+----------+#调用了inout_param存储过程,接受了输入的参数,也输出参数,改变了变量注意:①如果过程没有参数,也必须在过程名后面写上小括号例:CREATE PROCEDURE sp_name ([proc_parameter[,...]]) ??②确保参数的名字不等于列的名字,否则在过程体中,参数名被当做列名来处理强烈建议:>输入值使用in参数;>返回值使用out参数;>inout参数就尽量的少用。

[存储过程详解]sql存储过程实例详解

什么是存储过程: 存储过程可以说是一个记录集吧,它是由一些T-SQL语句组成的代码块,这些T-SQL语句代码像一个方法一样实现一些功能(对单表或多表的增删改查),然后再给这个代码块取一个名字,在用到这个功能的时候调用他就行了。
存储过程的好处:
1.由于数据库执行动作时,是先编译后执行的。然而存储过程是一个编译过的代码块,所以执行效率要比T-SQL语句高。
2.一个存储过程在程序在网络中交互时可以替代大堆的T-SQL语句,所以也能降低网络的通信量,提高通信速率。
3.通过存储过程能够使没有权限的用户在控制之下间接地存取数据库,从而确保数据的安全。
小结:总之存储过程是好东西,在做项目时属于必备利器,下面介绍存储过程的基本语法。
存储过程的语法和参数讲解
存储过程的一些基本语法:

创建存储过程的参数:
1.procedure_name :存储过程的名称,在前面加#为局部临时存储过程,加##为全局临时存储过程。
2.; number:是可选的整数,用来对同名的过程分组,以便用一条 DROP PROCEDURE 语句即可将同组的过程一起除去。例如,名为 orders 的应用程序使用的过程可以命名为 orderproc;1、orderproc;2 等。DROP PROCEDURE orderproc 语句将除去整个组。如果名称中包含定界标识符,则数字不应包含在标识符中,只应在 procedure_name 前后使用适当的定界符。
3.@parameter: 存储过程的参数。可以有一个或多个。用户必须在执行过程时提供每个所声明参数的值(除非定义了该参数的默认值)。存储过程最多可以有 2.100 个参数。 使用 @ 符号作为第一个字符来指定参数名称。参数名称必须符合标识符的规则。每个过程的参数仅用于该过程本身; 相同的参数名称可以用在其它过程中。默认情况下,参数只能代替常量,而不能用于代替表名、列名或其它数据库对象的名称。有关更多信息,请参见 EXECUTE。
4.data_type:参数的数据类型。所有数据类型(包括 text、ntext 和 image)均可以用作存储过程的参数。不过,cursor 数据类型只能用于 OUTPUT 参数。如果指定的数据类型为 cursor,也必须同时指定 VARYING 和 OUTPUT 关键字。有关 SQL Server 提供的数据类型及其语法的更多信息,请参见数据类型。 说明 对于可以是 cursor 数据类型的输出参数,没有最大数目的限制。
5.VARYING: 指定作为输出参数支持的结果集(由存储过程动态构造,内容可以变化)。仅适用于游标参数。
6.default: 参数的默认值。如果定义了默认值,不必指定该参数的值即可执行过程。默认值必须是常量或 NULL。如果过程将对该参数使用 LIKE 关键字,那么默认值中可以包含通配符(%、_、[] 和 [^])。
7.OUTPUT :表明参数是返回参数。该选项的值可以返回给 EXEC[UTE]。使用 OUTPUT 参数可将信息返回给调用过程。Text、ntext 和 image 参数可用作 OUTPUT 参数。使用 OUTPUT 关键字的输出参数可以是游标占位符。
8.RECOMPILE: 表明 SQL Server 不会缓存该过程的计划,该过程将在运行时重新编译。在使用非典型值或临时值而不希望覆盖缓存在内存中的执行计划时,请使用 RECOMPILE 选项。
9.ENCRYPTION: 表示 SQL Server 加密 syscomments 表中包含 CREATE PROCEDURE 语句文本的条目。使用 ENCRYPTION 可防止将过程作为 SQL Server 复制的一部分发布。
说明 在升级过程中,SQL Server 利用存储在 syscomments 中的加密注释来重新创建加密过程。
10.FOR REPLICATION :指定不能在订阅服务器上执行为复制创建的存储过程。.使用 FOR REPLICATION 选项创建的存储过程可用作存储过程筛选,且只能在复制过程中执行。本选项不能和 WITH RECOMPILE 选项一起使用。
11.AS :指定过程要执行的操作。
12.sql_statement :过程中要包含的任意数目和类型的 Transact-SQL 语句。但有一些限制。
小结:看过这些基本语法后,下面我就根据语法创建各式的存储过程。
创建存储过程
针对上面的表,我使用存储过程对它做一些操作:
1. 只返回单一记录集的存储过程

阅读更多 >>>  linux中i节点描述错误的是什么

结果:相当于运行 select * from UserAccount 这行代码,结果为整个表的数据。
2.没有输入输出的存储过程

结果:相当于运行 insert into UserAccount (UserName,[PassWord],RegisterTime,RegisterIP) values(9,9,'2013-01-02',9) 这行代码。
3.有返回值的存储过程

解释:这里的@@rowcount为执行存储过程影响的行数,执行的结果是不仅插入了一条数据,还返回了一个值即 return value =1 ,这个可以在程序中获取,稍后在c#调用存储过程中会有说到。
4.有输入参数和输出参数的存储过程

解释:@UserName为输入参数,@UserID为输出参数。 运行结果为@userID为COOUT(*)即 =1。
5. 同时具有返回值、输入参数、输出参数的存储过程
结果:@userID为COOUT(*)即 =1,Retun Value=1。
6.同时返回参数和记录集的存储过程
结果:返回执行 select * from UserAccount 这句代码的结果集,同时@userID为COOUT(*)即 =1,Retun Value=9。
7.返回多个记录集的存储过程

结果:返回两个结果集,一个为 select * from UserAccount,另一个为 select * from UserAccount where UserID>5 。
小结:上面我们创建了各式的存储过程。

Sql创建一个存储过程,根据指定的班级,得到该班级的人数的语句怎么写

SELECT COUNT(*) AS `总人数` FROM `A班`;
参考如下:
delimiter $$ Drop PROCEDURE IF EXISTS getCount ; CREATE PROCEDURE getCount (IN v_className VARCHAR(30),OUT v_count INTEGER) BEGIN declare icount integer; select count(*) into icount from 班级表 where banji=v_classNameEND$$ delimiter ;

如何在sql创建一条插入数据的存储过程

1、首先需要打开SQL Server Managment管理工具,新建一个表。
2、然后在表中插入一些样例数据。
3、接下来在SQL Server Managment中右键单击可编程性,选择新建存储过程。
4、然后在SQL编写界面中编写SQL语句,注意这里的@name就是接收的输入参数。
5、编写好存储过程,执行一下,就会在可编程性下面找到创建的存储过程。
6、最后通过exec调用一下存储过程,在调用的时候传入参数,就实现了带参数的存储过程编写了。

SQL SERVER 如何应用存储过程呢?操作方法有什么呢?

1.不带参数的存储过程,获取MyStudentInfo表的所有记录
2.创建带输入参数的存储过程
3.创建带默认值的输入参数的存储过程
4.创建带输出参数的存储过程(根据输入的ID返回年级ID)
这些主要放在罐子里储存,而且要记得密封,因为它会散发出有毒的气体,对人体是非常不利的。
会将储存的内容全部进行数据监测。需要先输入调用的指令,然后再输入数据库的位置,这样才能够调取储存的内容。
SQL SERVER 如何应用存储过程呢?
首先最好在SQL SERVER的管理工具中通过create procedure写一条语句来创建存储过程,创建语句后,点击工具栏中的执行命令,消息栏中显示命令已成功完成的消息,证明存储过程已创建。然后就可以在存储过程子文件夹下看到自己创建的存储过程了,执行存储过程,可以使用exec命令,后跟存储过程的名称,另外,还可以在创建存储过程的时候传入参数,如下图,需要使用@符号传入参数,如果你的存储过程加了参数,那么如果你调用的时候没有传入参数,SQL SERVER会提示错误。
操作方法有什么呢?
1、存储过程允许标准组件编程存储过程创建后,可以在程序中多次调用和执行,而无需重写存储过程的SQL语句。并且数据库专业人员可以随时修改存储过程,但对应用程序源代码没有影响,大大提高了程序的可移植性。
2、存储过程可以实现更快的执行速度如果一个操作包含大量的T-SQL语句代码,并且多次执行,存储过程比批量执行要快得多。因为存储过程是预编译的,所以当一个存储过程第一次运行时,查询优化器会对其进行分析、优化,并给出一个最终存储在系统表中的存储计划。批处理T-SQL语句每次运行都需要进行预编译和优化,所以速度会比较慢。
3、存储过程减少网络流量对于数据库对象的相同操作,如果将此次操作所涉及的T-SQL语句组织成一个存储过程,在客户端调用该存储过程时,只在网络上传递调用语句,否则会是多条 SQL 语句。从而减轻了网络流量,降低了网络负载存储过程可以用作安全机制,系统管理员可以对要执行的存储过程的权限进行限制,从而限制对某些数据的访问,避免未经授权的用户访问数据,保证数据安全。

网站数据信息

"sql创建存储过程语句,创建存储过程sql语句"浏览人数已经达到18次,如你需要查询该站的相关权重信息,可以点击进入"Chinaz数据" 查询。更多网站价值评估因素如:sql创建存储过程语句,创建存储过程sql语句的访问速度、搜索引擎收录以及索引量、用户体验等。 要评估一个站的价值,最主要还是需要根据您自身的需求,如网站IP、PV、跳出率等!