Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 如果给定一个过程,则创建一个表_Mysql_Sql_Stored Procedures - Fatal编程技术网

Mysql 如果给定一个过程,则创建一个表

Mysql 如果给定一个过程,则创建一个表,mysql,sql,stored-procedures,Mysql,Sql,Stored Procedures,我正在尝试根据创建的过程在数据库中创建一个表。我不熟悉MySQL程序,无法尝试创建此数据库 以下是程序代码: DELIMITER // CREATE PROCEDURE SetChanProps(IN vchanmask TEXT, in vchankey TEXT, IN vcommentxt TEXT, IN ventrymsg TEXT, IN vexpires TIMESTAMP, IN vgroupname TEXT, IN vchanlimit INT, IN vmodes TEXT

我正在尝试根据创建的过程在数据库中创建一个表。我不熟悉MySQL程序,无法尝试创建此数据库

以下是程序代码:

DELIMITER //
CREATE PROCEDURE SetChanProps(IN vchanmask TEXT, in vchankey TEXT, IN vcommentxt TEXT, IN ventrymsg TEXT, IN vexpires TIMESTAMP, IN vgroupname TEXT, IN vchanlimit INT, IN vmodes TEXT, IN vonlyowner INT, IN vsetbynick TEXT, IN vsetbyhost TEXT, IN vsetbypid INT, IN vtopic TEXT, IN vkickexisting INT)
BEGIN
DECLARE msgid int;
DECLARE rowcount int;
DECLARE setondate TIMESTAMP;
SET setondate = CURRENT_TIMESTAMP;
SELECT COUNT(*) INTO rowcount FROM `chanprops` WHERE `chanmask` = vchanmask;
if rowcount > 0 THEN UPDATE `chanprops` SET `chankey` = vchankey, `comment` = vcommentxt, `entrymsg` = ventrymsg, `expires` = vexpires, `groupname` = vgroupname, `limit` = vchanlimit, `mode` = vmodes, `onlyowner` = vonlyowner, `setbynick` = vsetbynick, `setbyhost` = vsetbyhost, `setbypid` = vsetbypid, `topic` = vtopic, `setondate` = setondate WHERE `chanmask` = vchanmask;
ELSE INSERT INTO `chanprops` (`chanmask`,`chankey`,`comment`,`entrymsg`,`expires`,`groupname`,`limit`,`mode`,`onlyowner`,`setbynick`,`setbyhost`,`setbypid`,`topic`) VALUES (vchanmask,vchankey,vcommentxt,ventrymsg,vexpires,vgroupname,vchanlimit,vmodes,vonlyowner,vsetbynick,vsetbyhost,vsetbypid,vtopic);
end if;
SET msgid = 36;
select matrixqueue(msgid,vchanmask,vchankey,vcommentxt,ventrymsg,Unix_Timestamp(vexpires),vgroupname,vchanlimit,vmodes,vonlyowner,vsetbynick,vsetbyhost,vsetbypid,vtopic,Unix_Timestamp(setondate),vkickexisting);
END//
DELIMITER ;
这是收集我制作这张桌子所需物品的正确路线吗

ELSE INSERT INTO `chanprops` (`chanmask`,`chankey`,`comment`,`entrymsg`,`expires`,`groupname`,`limit`,`mode`,`onlyowner`,`setbynick`,`setbyhost`,`setbypid`,`topic`) VALUES (vchanmask,vchankey,vcommentxt,ventrymsg,vexpires,vgroupname,vchanlimit,vmodes,vonlyowner,vsetbynick,vsetbyhost,vsetbypid,vtopic);
然后我会使用创建过程行(第2行)来确定列ID的类型吗


不幸的是,我试图利用这个过程的项目已经多年没有工作了,并且已经被它的创建者放弃了。它们包含了其他的.sql文件,通常只是为我创建表。他们似乎错过了我真正关心的参数类型。

可能参数类型:
在vchanmask文本中,在vchankey文本中,在vcommentxt文本中,在ventrymsg文本中,在vexpires时间戳中,在vgroupname文本中,在vchanlimit INT中,在vmodes文本中,在vonlyowner INT中,在vsetbynick文本中,在vsetbyhost文本中,在vsetbypid INT、vtopic TEXT、vkickexisting INT
中,您有这个过程,但是表丢失了?是的,您可以使用这些作为表结构的起点(尽管它可能包含更多的列,特别是更新查询中使用的
setondate
)。另外,
text
通常是
varchar
的占位符类型(长度未知)。缺少的一个重要部分是主键。它可能是一个自动增量或其他列(虽然可能只有
chanmask
有意义),您可以通过查看内容(或使用此表的其他代码)来了解这一点。@Solarflare我尝试在github上查看该项目,但没有任何运气。这是一个项目,我不会为你分析这个存储库。如果该表没有在其他任何地方使用,您可能不需要它(这可能解释了为什么他们忘记了该表),否则您可能需要使用该表分析其他代码和/或在执行该代码时等待出现错误(例如,其他缺少的列)。但仅仅用您当前拥有的信息创建该表似乎是一种可行的方法。