1樓:網友
start transaction;
delete from `company` where userid=$id;
delete from `user` where id=$id;
delete from `job` where companyid=$id;
commit;
我沒測試,但是這個根據標準語句寫出來的。你看看!
資料庫中儲存過程有什麼作用?
2樓:網友
第一:儲存過程因為sql語句已經預編繹過了,因此執行的速度比較快。
第二:儲存過程可以接受引數、輸出引數、返回單個或多個結果集以及返回值。可以向程式返回錯誤原因。
第三:儲存過程執行比較穩定,不會有太多的錯誤。只要一次成功,以後都會按這個程式執行。
第四:儲存過程主要是在伺服器上執行,減少對客戶機的壓力。
第五:儲存過程可以包含程式流、邏輯以及對資料庫的查詢。同時可以實體封裝和隱藏了資料邏輯。
第六:儲存過程可以在單個儲存過程中執行一系列 sql 語句。
第七:儲存過程可以從自己的儲存過程內引用其它儲存過程,這可以簡化一系列複雜語句。
其實儲存過程還可以控制許可權,比如乙個表不直接允許使用者直接訪問,但要求允許使用者訪問和修改其中乙個或多個欄位,那就可以通過乙個儲存過程來實現並允許該使用者使用該儲存過程。
還有,如果多條sql語句執行過程中,過程環節返回了資料作為後面環節的輸入資料,如果直接通過sql語句執行,勢必導致大量的資料通過網路返回到客戶機,並在客戶機運算;如果封裝在儲存過程中,則將運算放在伺服器進行,不但減少了客戶機的壓力,同時也減少了網路流量,提高了執行的效率。
3樓:
microsoft sql server 中的儲存過程與其他程式語言中的過程類似,原因是儲存過程可以:
接受輸入引數並以輸出引數的格式向呼叫過程或批處理返回多個值。
包含用於在資料庫中執行操作(包括呼叫其他過程)的程式設計語句。
向呼叫過程或批處理返回狀態值,以指明成功或失敗(以及失敗的原因)。
可以使用 transact-sql execute 語句來執行儲存過程。儲存過程與函式不同,因為儲存過程不返回取代其名稱的值,也不能直接在表示式中使用。
在 sql server 中使用儲存過程而不使用儲存在客戶端計算機本地的 transact-sql 程式的好處包括:
儲存過程已在伺服器註冊。
使用者可以被授予許可權來執行儲存過程而不必直接對儲存過程中引用的物件具有許可權。
儲存過程可以強制應用程式的安全性。
引數化儲存過程有助於保護應用程式不受 sql injection 攻擊。有關詳細資訊,請參閱 sql injection。
儲存過程允許模組化程式設計。
儲存過程一旦建立,以後即可在程式中呼叫任意多次。這可以改進應用程式的可維護性,並允許應用程式統一訪問資料庫。
儲存過程是命名**,允許延遲繫結。
這提供了乙個用於簡單**演變的間接級別。
儲存過程可以減少網路通訊流量。
乙個需要數百行 transact-sql **的操作可以通過一條執行過程**的語句來執行,而不需要在網路中傳送數百行**。
參照聯機。
4樓:網友
儲存過程就是作為可執行物件存放在資料庫中的乙個或多個sql命令。
定義總是很抽象。儲存過程其實就是能完成一定操作的一組sql語句。
mysql儲存過程的問題
5樓:網友
用觸發器會不會好一點??
6樓:網友
mysql沒有級聯刪除的嗎?
我對mysql不熟悉,在mssql裡面設定了主外來鍵關係在打上級聯更新級聯刪除後,如果乙個主表的資料刪除了會自動刪除對應的從表資料!不知道mysql裡面有沒有?你可以看看。
7樓:網友
你的userid是外部獲得的?
如果是外部獲得的,你沒必要這麼寫吧?刪除 t_baseinfo 時直接將條件寫成 t_ =in_userid
而t_user表如果你是用程式執行sql語句刪除的,在這裡你再加上刪除語句就會出錯。
mysql儲存過程:
8樓:天雨青辰
dayofyear不是mysql自有的函式,要看你的儲存過程具體是怎麼定義的了,所謂因地制宜。。。
date應該是乙個變數,now()應該是獲取當前時間,這個是可以猜到的。
dayofyear(_date)就是將_date這個變數格式化為定義好的dayofyear格式的。
然後再將(now())dayofyear(_date)整體格式化為dayofyear格式。
不知道這樣說你能明白不?或者把完整的儲存過程貼出來看下就知道了。
9樓:網友
得到結果:_date 這個日期距離今天的天數。
資料庫儲存過程是指???
10樓:網友
定義:常用的或很複雜的工作,預先用sql語句寫好並用乙個指定的名稱儲存起來, 那麼以後要叫資料庫提供與已定義好的儲存過程的功能相同的服務時,只需呼叫execute,即可自動完成命令。
儲存過程的優點:
1.儲存過程只在創造時進行編譯,以後每次執行儲存過程都不需再重新編譯,而一般sql語句每執行一次就編譯一次,所以使用儲存過程可提高資料庫執行速度。
2.當對資料庫進行復雜操作時(如對多個表進行update,insert,query,delete時),可將此複雜操作用儲存過程封裝起來與資料庫提供的事務處理結合一起使用。
3.儲存過程可以重複使用,可減少資料庫開發人員的工作量4.安全性高,可設定只有某此使用者才具有對指定儲存過程的使用權儲存過程的種類。
11樓:網友
儲存過程(stored procedure)是一組為了完成特定功能的sql語句集,經編譯後儲存在資料庫中。使用者通過指定儲存過程的名字並給出引數(如果該儲存過程帶有引數)來執行它。儲存過程是資料庫中的乙個重要物件,任何乙個設計良好的資料庫應用程式都應該用到儲存過程。
12樓:網友
一般將很複雜的sql語句寫成乙個儲存過程,簡單說就是sql集合,寫好後存起來,用到的時候直接呼叫,免得每次都得寫sql語句。
13樓:愛2我2別2走
我覺得是事務處理,能保持資料的完整性,也能減少程式端的**,和程式端對資料庫的訪問,講多部資料處理放在資料端這邊。
14樓:任夫
指的是在引數化查詢語言!
15樓:網友
你自己看吧 解釋的很清楚了。
mysql 儲存過程問題。
16樓:歡樂的尼美
delimiter //
create procedure pp()begin
declare title varchar(30) ;
set @title='儲存過程中定義變數與賦值';
select @title;
end;/delimiter ;
mysql> call pp;
title ||儲存過程中定義變數與賦值 |1 row in set ( sec)
17樓:匿名使用者
會不會是因為沒有寫 begin end 的原因呀?
delimiter //
create procedure helloworld()
begindeclare testvalue1 varchar(20);
declare testvalue2 varchar(20);
select 'hello world';
set testvalue1 = 'first test !';
select 'second test !' into testvalue2;
select concat( testvalue1 , testvalue2 );
end //
delimiter ;
mysql> call helloworld();
hello world |
hello world |
1 row in set ( sec)
concat( testvalue1 , testvalue2 )
first test !second test !
1 row in set ( sec)
query ok, 0 rows affected ( sec)
18樓:網友
mysql沒有級聯刪除的嗎? 我對mysql不熟悉。
關於mysql儲存過程的問題!
19樓:網友
建立過程:
drop procedure proc1;
delimiter //
create procedure proc1(out s int)begin
select count(*)into s from class;
end//delimiter ;
使用過程:set @p_out=1;
call proc1(@p_out);
select @p_out;
MySQL儲存過程查詢和刪除的問題
建立 delimiter create procedure my add in a int,in b int,out c int begin if a is null then set a 0 end if if b is null then set b 0 end if set c a b end...
思維的基本過程是思維的基本過程是什麼?
思維是對新輸入資訊與腦內儲存知識經驗進行一系列複雜的心智操作過程。1 分析與綜合 是最基本的思維活動。分析是指在頭腦中把事物的整體分解為各個組成部分的過程,或者把整體中的個別特性 個別方面分解出來的過程 綜合是指在頭腦中把物件的各個組成部分聯絡起來,或把事物的個別特性 個別方面結合成整體的過程。分析...
教學過程的基本特點有哪些教學過程的基本特點有哪些
基本特點 1 雙邊性與週期性 教學過程是教師與學生 教與學組成的雙邊活動過程,是教師的教與學生的學的矛盾統一。師生的雙邊活動,師生之間相互作用,不斷髮生碰撞 交流和融合。2 認知性與個性化。教學過程是學生在教師的指導下的特殊的認識過程。與人類其它的認識活動相比,它不是為了直接創造社會價值,而是為了實...