創建:
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)等。