创建:
Create
proc[ere]
procere_name[;number]
[{@parameter
data_type}
[varying][=default][output]
][,…n]
[with
{recompile|encryption|encrypton,recomption}]
[for
enplication]
As
Sql_statement[,…n]
参数:
整个语法中只有两个参数是必须的:procere_name存储过程名称和sql_statement存储过程内容。
procere_name:存储过程名称。
;number:对存储过程分组,“;数字”表示是一组存储过程,便于批量操作。
@parameter:参数名,命名必须用@开头;局部变量以@开头,全局变量以@@开头。
data_type:参数类型。
varying:指定作为输出参数的结果集。
Default:参数的默认值。
Output:表示为输出参数,返回值给execute/exe。
[with
{recompile|encryption|encrypton,recomption}][for
enplication]:这个我还不明白。。。
As:指定储存过程要执行的操作。
执行:
exec
test_sp
删除:
drop
proc
test_sp
2. mysql 删除所有存储过程
用循环删除就可以了
1:把所有的proc 放到一张临时表中(增加一个自增的ID)
2:取得总数
3:循环删除
下面是在sql2000中测试的
select identity(int,1,1)as id,name into #a from mysql.proc where db = 'mydate' and `type` = 'PROCEDURE'
declare @num int,@i int,@name char(20)
select @num=count(*)from #a
set @i=1
where @i<=@num+1
begin
select @name=name from #a where id=i
执行 drop proc @num--这里应该用动态语句
set @i=@i+1
end
3. plsql删除的存储过程
如果有开启归档日志的话,可以直接回滚;
另外如果是10g以上版本的话,可以使用flashback恢复,具体方法如下:
恢复存储过程的原理就是利用了oracle里所有的存储过程的源代码都是存在dba_source里,而drop某个存储过程的时候,oracle这里肯定要去dba_source里把相关的源代码给delete掉,既然是delete,那就可以直接flashback query了,如下:
SELECT *
FROM dba_source
AS OF TIMESTAMP TO_TIMESTAMP ('2015-03-30 00:00:00', 'YYYY-MM-DD HH24:MI:SS')
WHERE owner='' and name =''
可以通过drop
语句
进行实现。
sql:drop
procere
procerename;
解释:上面的sql语句的意思就是删除出
存储过程
名为procerename的存储过程。
备注:drop(删除)的通常是对象,如表(table)、视图(view),功能(function)等。
5. SQL写一个删除记录的存储过程
delete from 表名 where A = '2' OR A = '4'
6. SQL Server执行删除存储过程,删除多条数据,总是报为过程或函数 Test_Pro 指定了过多的参数。
你的存储过程只有一个参数(@orderid nvarchar(4000),但你执行的时候却传了'001','002'两个。
要不你就执行两次
EXECUTE [Test_Pro] '001'
EXECUTE [Test_Pro] '002'
要不就修改存储过程变成2个参数,在存储过程中执行两次不同条件的delete语句
7. SQL 中存储过程怎么使用
一、简单的储存过程:
1、创建一个存储过程
create procere GetUsers()
begin
select * from user;
end;12345
2、调用存储过程
call GetUsers();12
3、删除存储过程
drop procere if exists GetUsers;
二、带参数的存储过程
1、MySql 支持 IN (传递给存储过程) , OUT (从存储过程传出) 和 INOUT (对存储过程传入和传出) 类型的参数 , 存储过程的代码位于 BEGIN 和 END 语句内 , 它们是一系列 SQL 语句 , 用来检索值 , 然后保存到相应的变量 (通过指定INTO关键字) ;
2、下面的存储过程接受三个参数 , 分别用于获取用户表的最小 , 平均 , 最大分数 , 每个参数必须具有指定的类型 , 这里使用十进制值(decimal(8,2)) , 关键字 OUT 指出相应的参数用来从存储过程传出
create procere GetScores(
out minScore decimal(8,2),
out avgScore decimal(8,2),
out maxScore decimal(8,2)
)
begin
select min(score) into minScore from user;
select avg(score) into avgScore from user;
select max(score) into maxScore from user;
end;1234567891011
3、调用此存储过程 , 必须指定3个变量名(所有 MySql 变量都必须以@开始) , 如下所示 :
call GetScores(@minScore, @avgScore, @maxScore);12
4、该调用并没有任何输出 , 只是把调用的结果赋给了调用时传入的变量@minScore, @avgScore, @maxScore, 然后即可调用显示该变量的值 :
select @minScore, @avgScore, @maxScore;
5、使用 IN 参数 , 输入一个用户 id , 返回该用户的名字 :
create procere GetNameByID(
in userID int,
out userName varchar(200)
)
begin
select name from user
where id = userID
into userName;
end;12345678910
6、调用存储过程 :
call GetNameByID(1, @userName);
select @userName;123
8. SQL存储过程怎么写!!删除语句的
create
proc
存储过程名
@id
int
as
delete
from
表名
where
id=@id
GO
exec
存储过程名
1
--这样就调用存储过程从表中删除了ID记录为1的记录
9. SQL 如何删除指定数据库中的存储过程
可以通过drop语句进行实现。
sql:drop procere procerename;
解释:上面的sql语句的意思就是删除出存储过程名为procerename的存储过程。
备注:drop(删除)的通常是对象,如表(table)、视图(view),功能(function)等。