mysql5.0版本,我在MySQL Query工具中创建一个简单sp做测试,如下
create procedure sp_test()
begin
declare a int;
declare b int;end;
这么简单,既然说我的语法错误,不过我参照mysql5.0的手册写的呀,不明白,请问,刚才的语法如何?
还有,如何将SQL值给一变量(select expression into parameter from table)
如何定义变量,如何创建事物语法,谢谢
create procedure sp_test()
begin
declare a int;
declare b int;end;
这么简单,既然说我的语法错误,不过我参照mysql5.0的手册写的呀,不明白,请问,刚才的语法如何?
还有,如何将SQL值给一变量(select expression into parameter from table)
如何定义变量,如何创建事物语法,谢谢
DELIMITER $$;DROP PROCEDURE IF EXISTS RJ_ATTACHCLEAR$$CREATE PROCEDURE RJ_ATTACHCLEAR(OUT RESULT INTEGER)
BEGINDECLARE DAYS INT;SELECT DAYS =CAST(ltrim(rtrim(Value)) AS DEC(5)) from CONFIG where Name='CLEAR';IF (DAYS IS NULL) THEN
SET DAYS=90;
END IF;delete from TRANSFILE_BAK where DATEDIFF(NOW(),HANDLEDATE)>DAYS;END$$DELIMITER ;$$
在SQLyog中执行
CREATE PROCEDURE `sp_test`(in fi_t2 varchar(30))
BEGIN
declare f_incr_id integer;
declare f_sys_cd varchar(10);
declare f_sys_name varchar(500); set f_incr_id = 0; start transaction;
insert into test(t2, t3, t4) values(fi_t2,current_timestamp(),0);
set f_incr_id = (select last_insert_id());
select sys_cd, sys_name into f_sys_cd, f_sys_name from sys_system where sys_cd = 'TAS'; update test set t4 = 12 where t1 = f_incr_id; select f_sys_cd sys_cd, f_sys_name sys_name;
commit;END $$DELIMITER ;
返回的f_sys_name中是中文,2个字,但我执行这个procedure是提示data too log
2、检查fi_t2 是否真的DATA TOO LONG.
select sys_cd, sys_name into f_sys_cd, f_sys_name from sys_system where sys_cd = 'TAS';
然后select f_sys_cd sys_cd, f_sys_name sys_name; 输出这2个值,sys_cd是英文,sys_name是中文,
错误就出在f_sys_name那,报错’data too long for column 'f_sys_name' at low 1
create procedure sp_test()
begin
declare a int;
declare b int; end;delimiter ;2、还有,如何将SQL值给一变量:
回复:
decalre myintparas int;
select myIntColumn into myintparas from table limit 0,1
(一定要保证只有一条数据,否则出错,多条的时候,使用游标)3、如何定义变量,如何创建事物语法
回复:
定义变量,你已经回了。
事物:
START TRANSACTION;
SELECT @A:=SUM(salary) FROM table1 WHERE type=1;
UPDATE table2 SET summary=@A WHERE type=1;
COMMIT;会了吗?
建议在调用存储过程前执行如下语句:
php程序执行(mysql_query ,mysqli_query 是PHP函数,其他程序也有类似的函数):
mysql_query("SET NAMES 'utf8'",$link); // 你可以更改其他字符集,我使用的是 utf8
或:
mysqli_query("SET NAMES 'utf8'",$link); 问题即可解决。
mysql_query("SET NAMES 'utf8'",$link); // 你可以更改其他字符集,我使用的是 utf8,也就是说,你的程序是用哪个字符集存储的,就用哪个,我的程序是utf8,不过,一般程序都是这个字符集,有些例外,你可以自己定义存储的字符集。