mysql復制存儲過程
1. mysql存儲過程,從網上直接拷貝過來的存儲過程,為什麼報錯
mysql存儲如斗過程,從網上直接拷貝過來的渣橘磨存儲過程,為什麼報錯?
第1行 CREATE PROCEDURE ... 以後, 後伍悄面要有 BEGIN 。。。 END 的啊
mysql> DELIMITER //
mysql> CREATE PROCEDURE HelloWorld()
-> BEGIN
-> SELECT 『Hello World』;
-> END//
Query OK, 0 rows affected (0.00 sec)
2. MySql的存儲過程
SELECT VALUE INTO V_VALUE FROM TABLENAME WHERE ID = p_id ;
V_VALUE := V_VALUE + P_NUM;
UPDATE TABLENAME SET VALUE = V_VALUE WHERE ID = p_id ;
3. mysql使用存儲過程復製表A的內容到表B里
DELIMITER//
CREATEPROCEDURE()
BEGIN
INSERTINTO`b`(`Aid`,`name`,`code`)SELECT`id`,`name`,`code`FROMA;
END//
DELIMITER;
4. Mysql存儲過程
不知道對不對 僅供參考(表名換成自己的)
CREATE PROCEDURE `getStuInfo`(IN `p_name` varchar(20))
BEGIN
DECLARE count int;
SET count=(select count(*) from xiao where `name`= p_name);
IF count THEN
select * from xiao where `name`= p_name;
ELSE
SELECT '查詢失敗' as result ;
END IF;
END
調用的時候是 call getStuInfo('張三')
5. MySQL的存儲過程和存儲函數(UDF)的區別
2、存儲過程沒返回值,參數可以是 IN,OUT,IN OUT類型,有的人可能會理解成OUT 也算是返回值。
3、調用方式:函數 select my_fun() ;過程 call my_pro( ) ;
4、DEMO
1
2
3
4
5
6
7
8
9
10
11
DELIMITER $$
DROP FUNCTION IF EXISTS my_fun$$
CREATE
FUNCTION my_fun(a INT(2),b INT(2))
RETURNS INT(4)
BEGIN
DECLARE sum_ INT(2) DEFAULT 0;
SET sum_ = a + b;
RETURN sum_;
END$$
DELIMITER ;
1
2
3
4
5
6
7
8
DELIMITER $$
DROP PROCEDURE IF EXISTS my_pro$$
CREATE
PROCEDURE my_pro(IN a INT(2),IN b INT(2) ,OUT c INT(2))
BEGIN
SET c = a + b;
END$$
DELIMITER ;
5、調用
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
mysql> call my_pro(1,2,@c);
Query OK, 0 rows affected (0.00 sec)
mysql> select @c;
+------+
| @c |
+------+
| 3 |
+------+
1 row in set (0.00 sec)
mysql> select my_fun(1,2);
+-------------+
| my_fun(1,2) |
+-------------+
| 3 |
+-------------+
1 row in set (0.00 sec)
6. mysql中的存儲過程怎麼使用
存儲過程(Stored
Procere)是一組為了完成特定功能的SQL語句集功能是將常用或復雜的工作,預先用SQL語句寫好並用一個指定名稱存儲起來,
以後需要資料庫提供與已定義好的存儲過程的功能相同的服務時,只需調用
call
存儲過程名字,
即可自動完成命令。存儲過程是由流控制和SQL語句書寫的過程,這個過程經編譯和優化後存儲在資料庫伺服器中,可由應用程序通過一個調用來執行,而且允許用戶聲明變數
。同時,存儲過程可以接收和輸出參數、返回執行存儲過程的狀態值,也可以嵌套調用。
7. mysql存儲過程是什麼意思什麼時候會用到,主要用來做什麼
存儲過程簡單來說,就是為以後的使用而保存的一條或多條MySQL語句的集合。可將其視為批件,雖然它們的作用不僅限於批處理。
存儲過程就是有業務邏輯和流程的集合,
可以在存儲過程中創建表,更新數據,
刪除等等。
你可以理解為用sql語句開發的一個
類和函數。
為什麼要使用存儲過程
通過把處理封裝在容易使用的單元中,簡化復雜的操作(正如前面例子所述)。
由於不要求反復建立一系列處理步驟,這保證了數據的完整性。如果所有開發人員和應用程序都使用同一(試驗和測試)存儲過程,則所使用的代碼都是相同的。這一點的延伸就是防止錯誤。需要執行的步驟越多,出錯的可能性就越大。防止錯誤保證了數據的一致性。
簡化對變動的管理。如果表名、列名或業務邏輯(或別的內容)有變化,只需要更改存儲過程的代碼。使用它的人員甚至不需要知道這些變化。
8. 如何對MySQL數據表進行復制,表結構復制
1、復製表結構(語法
creata
table
舊表
select
*
from
新表)
create
table
t1(
id
int
unsigned
auto_increment
primary
key,
name
varchar(32)
not
null
default
'',
pass
int
not
null
default
0
);
desc
查看錶結構
創建表
t2
同時復製表
t1
表結構
create
table
t2
select
*
from
t1;
desc
t2
查看錶結構
注意:兩張的表欄位結構一樣,但是
主鍵
primary
key
和
自增
auto_increment
沒有了,所以這種方法不推薦大家使用,那如何才能創建出兩張完全一樣的表呢,辦法肯定有的,如下面語句。
create
table
t2
like
t1;
這就可以創建一張
t2
和
t1
完全一樣的表了。
2、指定欄位復製表結構
語法:
create
table
新表
select
欄位1,欄位2
…
from
舊表
3、復製表中數據
假設要把表
t1
中的數據全部復制到表
t2中
insert
into
t2
select
*from
t1;
如果只想復制某個欄位
insert
into
t2(欄位1,欄位2)
select
欄位1,欄位2from
t1;
9. mysql如何同步存儲過程。
存儲過程不需要同步,如果同步了也沒有關系,來看下存儲過程的主從復制原理
主伺服器上的存儲過程受到definer從句的約束.但是,在復制的時候,從服務上不需要有存儲過程
A. 當binlog_format = statement 或binlog_format = mixed (使用混合模式用的是statement 方式) 這種模式下復制情況
可以看到通過系統函數轉換後的值復制給從伺服器.不需要在從伺服器上建立存儲過程
B .當binlog_format = row 或 binlog_format = mixed(使用混合模式用的是row方式) 這種模式下復制情況
主伺服器把被修改的頁面復制給從伺服器,並且這個修改的頁面的值是觸發後的改變值.所以也不需要在從伺服器上建立存儲過程
默認情況下,存儲過程對象本身在mysql庫中,可能不被復制,但是,在復制的時候,從服務上不需要有存儲過程
一般來講,如果你的bin-log沒有指定庫,存儲過程在任何情況下都是同步的,如果指定了庫,你基於該庫
也就是:
use db;
再在上面創建存儲過程,肯定會同步的。