当前位置:首页 » 存储配置 » mysql存储过程定义者

mysql存储过程定义者

发布时间: 2022-05-09 21:29:07

㈠ mysql存储过程

MySQL存储过程创建的格式如下:
CREATE PROCEDURE 过程名 ([过程参数[,...]])[特性 ...] 过程体
举例代码如下:

CREATE PROCEDURE proc1(OUT s int) BEGIN SELECT COUNT(*) INTO s FROM user; END

存储过程根据需要可能会有输入、输出、输入输出参数,这里有一个输出参数s,类型是int型,如果有多个参数用","分割开。
过程体的开始与结束使用BEGIN与END进行标识。
注意:MySQL在5.0以前并不支持存储过程

㈡ mysql 存储过程

你应该在做统计吧,估计你不会的就是mysql存储过程的语法 我之前也写过 很是郁闷 我给你一段代码 是我用mysql写过的一个存储过程 你看看 主要是了解里面的语法 看懂了 你所说的需求并不难
有看不懂的地方一起讨论 :
begin

declare tikk datetime ;
declare done int default 0;
declare userid int default 0;
declare moleid int default 0;
declare couid int default 0;
declare mname varchar(255) ;
declare opsid int default 0;

declare c1 cursor for Select I_userID,I_operationID from space_operation_record where status<>0 group by I_userID,I_operationID order by createtime desc;
declare continue handler for sqlstate '02000' set done =1;
set tikk = now();
open c1;
repeat
fetch c1 into userid, opsid;
if not done then
select I_moleID from space_operation where status<>0 and ID=opsid into moleid;
if moleid <> '' then
select Nvc_identification from space_operation where status<>0 and ID=opsid into @identiftion;
if moleid > 0 then
Select Nvc_ename from space_mole where status<>0 and ID=moleid into mname;
else
set mname = 'space';
end if;

create temporary table if not exists sp_tab1(id bigint(20),Nvc_content MEDIUMTEXT,I_obyuID bigint(20),I_tID bigint(20),createtime datetime);
INSERT INTO sp_tab1 Select ID,Nvc_content,I_objectID,I_tmID,createtime from space_operation_record where status<>0 and I_operationID=opsid and I_userID=userid ;
select count(*) from sp_tab1 into couid;

set @ihod = 0;
set @listp = '';
set @listpp = '';
set @content0p = '';
set @content0 = '';
while couid > 0 do
select ID,Nvc_content,I_obyuID,createtime,I_tID into @iok,@conuiy,@objiplk,@crtimhr,@tmids from sp_tab1 where ID > @ihod order by ID asc limit 0,1;
if @iok <> '' then
if mname = 'blog' then
INSERT INTO space_operation_stat(I_operationID,I_userID,Nvc_content,D_stattime,createtime) VALUES (@iok,userid,@conuiy,@crtimhr,tikk);
elseif mname = 'team' then
if(@identiftion = 'addblog' || @identiftion = 'mdyblog') then
INSERT INTO space_operation_stat(I_operationID,I_userID,Nvc_content,D_stattime,I_tmID,createtime) VALUES (@iok,userid,@conuiy,@crtimhr,@tmids,tikk);
else
set @listpp = CONCAT(@listpp,CONCAT(@objiplk,','));
set @operarry1p = substring_index(@conuiy,'|',1);
set @operarry2p = substring_index(@conuiy,'|',-1);
set @content0p = CONCAT(@content0p,CONCAT(@operarry2p,SPACE(1)));
set @objlistp = substring(@listpp,1,length(@listpp)-1);
end if;
elseif mname = 'space' then
if(@identiftion = 'headphoto' || @identiftion = 'status') then
INSERT INTO space_operation_stat(I_operationID,I_userID,Nvc_content,D_stattime,I_tmID,createtime) VALUES (@iok,userid,@conuiy,@crtimhr,@tmids,tikk);
else
set @listppr = CONCAT(@listppr,CONCAT(@objiplk,','));
set @operarry1pr = substring_index(@conuiy,'|',1);
set @operarry2pr = substring_index(@conuiy,'|',-1);
set @content0pr = CONCAT(@content0pr,CONCAT(@operarry2pr,SPACE(1)));
set @objlistpr = substring(@listppr,1,length(@listppr)-1);
end if;
else
set @listp = CONCAT(@listp,CONCAT(@objiplk,','));
set @operarry1 = substring_index(@conuiy,'|',1);
set @operarry2 = substring_index(@conuiy,'|',-1);
set @content0 = CONCAT(@content0,CONCAT(@operarry2,SPACE(1)));
set @objlist = substring(@listp,1,length(@listp)-1);
end if;
set @ihod = @iok;
end if;
set couid = couid -1;
end while;

if @content0 <> '' then
set @contentp = CONCAT(@operarry1,concat('|',@content0));
Select createtime,ID into @uitimej,@IDjok from space_operation_record where status<>0 and I_operationID=opsid order by createtime desc limit 0,1;
if @uitimej <> '' then
INSERT INTO space_operation_stat(I_operationID,I_userID,Nvc_content,D_stattime,createtime,Nvc_objlist) VALUES(@iok,userid,@contentp,@crtimhr,tikk,@objlist);
end if;
end if;
if @content0p <> '' then
if @identiftion = 'addphoto' then
set @contentp = CONCAT(@operarry1p,CONCAT('|',@content0p));
else
set @contentp = CONCAT(@operarry1p,CONCAT(@content0p,'|'));
end if;

Select createtime,ID into @uitimej,@IDjok from space_operation_record where status<>0 and I_operationID=opsid order by createtime desc limit 0,1;
if @uitimej <> '' then
INSERT INTO space_operation_stat(I_operationID,I_userID,Nvc_content,D_stattime,createtime,Nvc_objlist,I_tmID) VALUES(@iok,userid,@contentp,@crtimhr,tikk,@objlistp,@tmids);
end if;
end if;
if @content0pr <> '' then
set @contentp = CONCAT(@operarry1p,concat('|',@content0pr));
Select createtime,ID into @uitimej,@IDjok from space_operation_record where status<>0 and I_operationID=opsid order by createtime desc limit 0,1;
if @uitimej <> '' then
INSERT INTO space_operation_stat(I_operationID,I_userID,Nvc_content,D_stattime,createtime,Nvc_objlist,I_tmID) VALUES(@iok,userid,@contentp,@crtimhr,tikk,@objlistp,@tmids);
end if;
end if;
delete from sp_tab1;
end if;
end if;

until done end repeat;
close c1;
drop temporary table if exists sp_tab1 ;

UPDATE space_operation_play SET status=0;
UPDATE space_operation_display SET status=0;
Select createtime into @ptimes from space_operation_stat where status<>0 order by createtime desc limit 0,1;
if @ptimes <>'' then
create temporary table if not exists sp_tab2(id bigint(20),Nvc_content MEDIUMTEXT,I_userID bigint(20),I_lyuID bigint(20),D_stattime datetime);
INSERT INTO sp_tab2 Select ID,Nvc_content,I_userID,I_tmID,D_stattime from space_operation_stat where status<>0 and createtime=@ptimes order by D_stattime desc limit 0,30;
select count(*) from sp_tab2 into @cou1id;
set @uoj = 0;
while @cou1id > 0 do
select ID,Nvc_content,I_userID,D_stattime,I_lyuID into @io1k,@conui1y,@objipl1k,@crtimh1r,@unlpa from sp_tab2 where ID > @uoj order by ID asc limit 0,1;
if @io1k <> '' then
INSERT INTO space_operation_play(I_statID,Nvc_content,D_stattime,I_userID,Createtime,I_tmID) VALUES (@io1k,@conui1y,@crtimh1r,@objipl1k,now(),@unlpa);
set @uoj = @io1k;
end if;
set @cou1id = @cou1id -1;
end while;
drop temporary table if exists sp_tab2 ;
end if;

end

㈢ mysql中存储过程是什么意思

存储过程(stored
procere)是一组为了完成特定功能的sql语句集,经编译后存储在数据库中,用户通过指定存储过程的名字并给定参数(如果该存储过程带有参数)来调用执行它。
一个存储过程是一个可编程的函数,它在数据库中创建并保存。

㈣ mysql 存储过程 是什么意思

用select...into语句

下面是mysql 5.0的帮助文档的:
这个SELECT语法把选定的列直接存储到变量。因此,只有单一的行可以被取回。

SELECT id,data INTO x,y FROM test.t1 LIMIT 1;
注意,用户变量名在MySQL 5.1中是对大小写不敏感的。请参阅9.3节,“用户变量”。

重要: SQL变量名不能和列名一样。如果SELECT ... INTO这样的SQL语句包含一个对列的参考,并包含一个与列相同名字的局部变量,MySQL当前把参考解释为一个变量的名字。例如,在下面的语句中,xname 被解释为到xname variable 的参考而不是到xname column的:

CREATE PROCEDURE sp1 (x VARCHAR(5))
BEGIN
DECLARE xname VARCHAR(5) DEFAULT 'bob';
DECLARE newname VARCHAR(5);
DECLARE xid INT;

SELECT xname,id INTO newname,xid
FROM table1 WHERE xname = xname;
SELECT newname;
END;
当这个程序被调用的时候,无论table.xname列的值是什么,变量newname将返回值‘bob’。

㈤ mysql中的存储过程、触发器、视图的用法

建立存储过程

Create procere、Create function

下面是它们的格式:
Create proceresp_Name ([proc_parameter ])
routine_body

这里的参数类型可以是 IN OUT INOUTT ,意思和单词的意思是一样的,IN 表示是传进来的参数,
OUT 是表示传出去的参数,INOUT 是表示传进来但最终传回的参数。
Create functionsp_Name ([func_parameter ])
Returns type

Routine_body
Returns type 指定了返回的类型,这里给定的类型与返回值的类型要是一样的,否则会报错。

下面给出两个简单的例子来说明:

1、 显示 Mysql 当前版本

执行结果
mysql> use welefen;
Database changed
mysql> delimiter // #定义//作为结束标记符号
mysql> create procere getversion(out param1 varchar(50)) #param1为传出参数
-> begin
-> select version() into param1; #将版本的信息赋值给 param1
-> end
-> //
Query OK, 0 rows affected (0.00 sec)

mysql> call getversion(@a); #调用getversion()这个存储过程
-> //
Query OK, 0 rows affected (0.00 sec)

mysql> select @a;
-> //
+--------------------------+
| @a |
+--------------------------+
| 5.1.14-beta-community-nt |
+--------------------------+
1 row in set (0.00 sec)

2、 显示”hello world”

执行结果
mysql> delimiter //
mysql> create function display(w varchar(20)) returns varchar(50)
-> begin
-> return concat('hello ‘,w);
-> end
-> //
Query OK, 0 rows affected (0.05 sec)

mysql> select display("world");
-> //
+------------------+
| display("world") |
+------------------+
| hello world |
+------------------+
1 row in set (0.02 sec)

其他操作存储过程的语句

前面我们已经知道了怎么创建存储过程,下面看看其他常用的用于操作存储过程的语句。

Alter {procere | function} sp_Name []

Alter 语法是用来改变一个过程或函数的特征,当你想改变存储过程或者函数的结构时可以使
用它。当然你也可以先 drop 它再 create。

Drop {procere | function} [if exists] sp_Name

Drop 语法即用来删除一个存储程序或者函数,当你创建的一个存储过程或者函数的名字已经存
在时,你想把以前的给覆盖掉,那么此时你就可以使用 drop ,然后在创建。

Show create {procere | function } sp_Name

Show 语法用来显示创建的存储过程或者函数的信息。这里的 show 用法跟数据表中的 show 用
法是很相似的。

Show {procere | function} status [like 'partten']

它返回子程序的特征,如数据库,名字,类型,创建者及创建和修改日期。如果没有指定样式,
根据你使用的语句,所有存储程序和存储函数的信息都被列出。

看了以上的几个语法,你是不是感觉跟对表的操作很相象,那你就想对了,他们确实是很相似
的。带着一份激动心情我们继续往下看,你会发现很简单。

Begin ... End 语句

通过 begin end 可以来包含多个语句,每个语句以“;”结尾。

Declare

用Declare 来声明局部变量
Declarevar_Name type defaulevaule

Delare 条件

Declarecondition_Name CONDITION FOR condition_value

调用存储过程

Call

格式:
Callsp_Name [parameter ]

这里的 sp_Name 必须是由 create procere 创建的名称。它可以通过声明的参数来传回值,
它也返回受影响的行数,在 MySQL 中可以通过 mysql_affected_rows() 来获得。

流程控制语句

IF 语句

IFsearch_condition THENstatement_list
[ELSEIFsearch_condition THENstatement_list]
[ELSEstatement_list]
END IF

CASE 语句

CASE case_value
WHEN when_value THENstatement_list
WHEN when_value THENstatement_list]
ELSEstatement_list]
END CASE

LOOP 语句

[begin_label:] LOOP
statement_list
END LOOP [end_label]
LOOP 实现了一个简单的循环,通过 LEAVE 来退出

LEAVE 语句

LEAVE lable
退出语句,一般可以用在循环中。

ITERATE 语句

ITERATE lable
ITERATE 一般出现在 LOOP、REPEATE、WHILE 里,意思是再次循环。

REPEATE 语句

[begin_label:] REPEAT
statement_list
UNTILsearch_condition
END REPEAT [end_label]
REPEAT 语句内的语句或语句群被重复,直至 search_condition 为真。

WHILE 语句

[begin_label:] WHILEsearch_condition DO
statement_list
END WHILE [end_label]
WHILE 语句内的语句或语句群被重复,直至 search_condition 为真。
运用实例

下面通过几个例子来讲述他们的应用:

对网站用户的操作

为了简单,用户表只有用户名和密码的信息.在服务端,我们建立如下的表:

代码片段
Drop table if exists user;
Create table user(
Id int unsigned not null auto_increment,
Name varchar(20) not null,
Pwd char(32) not null,
Primary key(Id)
);

添加用户的存储过程:

代码片段
Delimiter //
Create procere insertuser(in username varchar(20),in userpwd varchar(32))
Begin
Insert into welefen.user(Name,Pwd) values (username,md5(userpwd));
End
//

验证用户的存储过程:

代码片段
Delimiter //
Create procere validateuser(in username varchar(20),out param1)
Begin
Select Pwd into param1 from welefen.user where Name=username;
End
//

修改密码的存储过程:

代码片段
Delimiter //
Create procere modifyPwd(in username varchar(20),in userpwd varchar(32))
Begin
Update welefen.user set Pwd=md5(userpwd) where Name=username;
End
//

删除用户的存储过程:

代码片段
Delimiter //
Create procere deleteuser(in username varchar(20))
Begin
delete from welefen.user where Name=username;
End
//

在客户端,我们给出如下的程序:

代码片段
文件名:ProcereUser.php
<?php

if (!mysql_connect("localhost","root","welefen")){
echo "连接数据库失败";
}
if (!mysql_select_db("welefen")){
echo "选择数据库表失败<br>";
}

$insert_user=array("welefen","welefen");//这里的welefen分别为用户名、密码
if (mysql_query("call insertuser('$insert_user[0]','$insert_user[1]')")){
echo "添加用户$insert_user[0]成功<br>";
}else {
echo "添加用户$insert_user[0]失败<br>";
}

$validate_user=array("welefen","welefen");//这里的welefen分别为用户名、密码
mysql_query("call validateuser('$validate_user[0]',@a)");
$Pwd=mysql_query("select @a");
$result=mysql_fetch_array($Pwd);
if ($result[0]==md5($validate_user[1])){
echo "用户$validate_user[0]验证正确<br>";
}else {
echo "用户$validate_user[0]验证错误<br>";
}

$modify_Pwd=array("welefen","weilefeng"); //welefen为用户名weilefeng为新密码
if (mysql_query("call modifyPwd('$modify_Pwd[0]','$modify_Pwd[1]')")){
echo "用户$modigy_Pwd[0]的密码修改成功<br>";
}else {
echo "用户$modigy_Pwd[0]的密码修改失败<br>";
}

$delete_user=array("welefen"); //welefen为用户名
if (mysql_query("call deleteuser('$delete_user[0]')")){
echo "用户$delete_user[0]删除成功<br>";
}else {
echo "用户$delete_user[0]删除失败<br>";
}
?

程序运行的结果:

执行结果
添加用户welefen 成功
用户welefen 验证正确
用户welefen 的密码修改成功
用户welefen 删除成功

以上的这个程序简单的说明了Mysql 中的存储过程结合PHP 的应用,当然在实际应用要比这个
复杂的多。

验证角谷猜想

角谷猜想:给定一个整数x,若x%2=1,则x=3*x+1,否则x=x/2,如此循环下去,经过有限步骤必
能得到1。
例 如 : 初 始 整 数 为 9 , 则
9->28->14->7->22->11->34->17->52->26->13->40->20->10->5->16->8->4->2->1

为了说明存储过程中一些语法的应用,我们通过存储过程来实现它:

执行结果
mysql> delimiter //
mysql> create procere jgguess(in number int)
-> begin
-> declare param1 int default 1;
-> set @a=concat(number);
-> jiaogu:loop #循环开始
-> set param1=number%2;
-> if param1=1 then set number=number*3+1; #number 为奇数,将它乘3加 1
-> else set number=number/2;
-> end if;
-> set @a=concat(@a,'->',number);
-> if number>1 then iterate jiaogu; #number 不为 1,继续循环
-> end if;
-> leave jiaogu; #退出循环
-> end loop jiaogu;
-> end
-> //
Query OK, 0 rows affected (0.00 sec)

mysql> call jgguess(11);
-> //
Query OK, 0 rows affected (0.00 sec)

mysql> select @a//
+-------------------------------------------------------+
| @a |
+-------------------------------------------------------+
| 11->34->17->52->26->13->40->20->10->5->16->8->4->2->1 |
+-------------------------------------------------------+
1 row in set (0.02 sec)

在这个存储过程中,你传入的参数不能超过int 型数据的范围,否则就会报错。

触发器

触发器是与表有关的命名数据库对象,当表上出现特定事件时,将激活该对象。例如当我们向
某个表插入一行数据时发生一个事件或者删除某个记录时触发某个事件。
语法:
CREATE TRIGGER trigger_Name trigger_time trigger_event
ON tbl_Name FOR EACHROW trigger_stmt
trigger_time 是触发器的动作时间。它可以是 BEFORE 或 AFTER ,以指明触发器是在激活它的
语句之前或之后触发。
trigger_event 指明了激活触发器的语句的类型。trigger_event 可以是下述值之一:
INSERT:将新行插入表时激活触发器,例如,通过 INSERT、LOADDATA 和 REPLACE 语句;
UPDATE:更改某一行时激活触发器,例如,通过UPDATE语句;
DELETE:从表中删除某一行时激活触发器,例如,通过 DELETE 和 REPLACE 语句。

例如当我们向上面的user 表中增加一个用户名为“welefen ”时,我们把记录用户数的表的值增
加 1;

代码片段
Create table numuser(
Num int not null default 0
);

Delimiter //
Create trigger testnum after insert on welefen.user for each row
Begin
Update welefen.numuser set Num=Num+1;
End
//

视图

当我们想得到数据表中某些字段的信息,并想把他们保存时我们就可以用视图。

语法:
CREATE [OR REPLACE] [ALGORITHM = {UNDEFINED | MERGE | TEMPTABLE}]
VIEW view_Name [(column_list)]
AS select_statement
[WITH [CASCADED | LOCAL] CHECK OPTION]

例如我们想对上面的用户表使用视图,可以这样:
Create viewwelefen.userview as select * fromwelefen.user;
查看视图的信息可以使用:
Select * fromwelfen.userview;

㈥ mysql 执行存储过程需要什么权限

创建存储过程的时候可以指定 SQL SECURITY属性,设置为 DEFINER 或者INVOKER,用来奉告mysql在执行存储过程的时候,,是以DEFINER用户的权限来执行,还是以调用者的权限来执行。
默认情况下,使用DEFINER方式,此时调用存储过程的用户必须有存储过程的EXECUTE权限,并且DEFINER指定的用户必须是在mysql.user表中存在的用户。
DEFINER模式下,默认DEFINER=CURRENT_USER,在存储过程执行时 mysql 会检查DEFINER定义的用户'user_name'@'host_name'的权限;
INVOKER模式下,在存储过程执行时,会检查存储过程调用者的权限。

㈦ mysql中如何创建存储过程

-- 创建存储过程DELIMITER $ --声明存储过程的结束符

CREATE PROCEDURE stu_test() --存储过程名称(参数列表)

BEGIN --开始 -- 可以写多个sql语句 -- sql语句+流程控制

END $ --结束 结束符

-- 执行存储过程call stu_test() --call 存储过程名称(参数)

参数:IN: 表示输入参数,可以携带数据带存储过程中
OUT: 表示输出参数,可以从存储过程中返回结果
INOUT: 表示输入输出参数,两者结合


㈧ mysql存储过程是什么意思什么时候会用到,主要用来做什么

存储过程简单来说,就是为以后的使用而保存的一条或多条MySQL语句的集合。可将其视为批件,虽然它们的作用不仅限于批处理。
存储过程就是有业务逻辑和流程的集合,
可以在存储过程中创建表,更新数据,
删除等等。
你可以理解为用sql语句开发的一个
类和函数。
为什么要使用存储过程
通过把处理封装在容易使用的单元中,简化复杂的操作(正如前面例子所述)。
由于不要求反复建立一系列处理步骤,这保证了数据的完整性。如果所有开发人员和应用程序都使用同一(试验和测试)存储过程,则所使用的代码都是相同的。这一点的延伸就是防止错误。需要执行的步骤越多,出错的可能性就越大。防止错误保证了数据的一致性。
简化对变动的管理。如果表名、列名或业务逻辑(或别的内容)有变化,只需要更改存储过程的代码。使用它的人员甚至不需要知道这些变化。

㈨ mysql 存储过程中变量的定义与赋值操作

一、变量的定义
mysql中变量定义用declare来定义一局部变量,该变量的使用范围只能在begin...end
块中使用,变量必须定义在复合语句的开头,并且是在其它语句之前,也可以同时申明多个变量,如果需要,可以使用default赋默认值。
定义一个变量语法如下:
declare
var_name[,...]
type[default
value]看一个变量定义实例
declare
last
date;二、mysql存储过程变量赋值
变量的赋值可直接赋值与查询赋值来操作,直接赋值可以用set来操作,可以是常量或表达式如果下
复制代码
代码如下:
set
var_name=
[,var_name
expr]...给上面的last变量赋值方法如下
set
last
=
date_sub(
current_date(),interval
1
month);下面看通过查询给变量赋值,要求查询返回的结果必须为一行,具体操作如下
select
col
into
var_name[,...]
table_expr我们来通过查询给v_pay赋值。
create
function
get
_cost(p_custid
int,p_eff
datetime)
return
decimal(5,2)
deterministic
reads
sql
data
begin
declare
v_pay
decimail(5,2);
select
ifnull(
sum(pay.amount),0)
into
vpay
from
payment
where
pay.payd<=p_eff
and
pay.custid=pid
reutrn
v_rent
+
v_over
-
v_pay;
end
$$
好了,这篇简单的存储过程中变量的定义赋值教程就到这里了,下面我们会接着讲关于myql存储过程的条件的定义与处理。
以下是其它网友的补充
在MySQL的存储过程中,可以使用变量,它用于保存处理过程中的值。
定义变量使用DECLARE语句,语法格式如下:
DECLARE
var_name[,...]
type
[DEFAULT
value]
其中,var_name为变量名称,type为MySQL支持的任何数据类型,可选项[DEFAULT
value]为变量指定默认值。一次可以定义多个同类型的变量,各变量名称之间以逗号“,”隔开。
定义与使用变量时需要注意以下几点:

DECLARE语句必须用在DEGIN…END语句块中,并且必须出现在DEGIN…END语句块的最前面,即出现在其他语句之前。

DECLARE定义的变量的作用范围仅限于DECLARE语句所在的DEGIN…END块内及嵌套在该块内的其他DEGIN…END块。

存储过程中的变量名不区分大小写。
定义后的变量采用SET语句进行赋值,语法格式如下:
SET
var_name
=
expr
[,var_name
=
expr]
...
其中,var_name为变量名,expr为值或者返回值的表达式,可以使任何MySQL支持的返回值的表达式。一次可以为多个变量赋值,多个“变量名=值”对之间以逗号“,”隔开。
例如:
复制代码
代码如下:
begin
declare
no
varchar(20);
declare
title
varchar(30);
set
no='101010',title='存储过程中定义变量与赋值';
end
提示:存储过程中所有的关键字也是不区分大小写的,如BEGIN可以写出begin。

热点内容
phpifecho 发布:2024-11-16 21:57:11 浏览:723
android动态加载布局 发布:2024-11-16 21:37:54 浏览:799
php判断ip 发布:2024-11-16 21:07:03 浏览:739
有看头密码怎么改 发布:2024-11-16 20:57:39 浏览:327
A有语法错误不能编译 发布:2024-11-16 20:49:17 浏览:947
厨房需要配置什么喷淋头 发布:2024-11-16 20:39:02 浏览:298
酒瓶解压 发布:2024-11-16 20:29:20 浏览:730
视频怎样上传到手机 发布:2024-11-16 20:26:30 浏览:259
怎么把ppt文件压缩 发布:2024-11-16 20:22:30 浏览:686
linux大内存 发布:2024-11-16 20:22:28 浏览:951