Mysql 此位置的Use输入无效
我正在尝试在MySQL Workbench中创建一个存储过程:Mysql 此位置的Use输入无效,mysql,sql,stored-procedures,mysql-workbench,Mysql,Sql,Stored Procedures,Mysql Workbench,我正在尝试在MySQL Workbench中创建一个存储过程: USE `data_p`; DROP PROCEDURE IF EXISTS `Product`; DELIMITER $$ USE `data_p`$$ CREATE DEFINER=`data_s_admin`@`...` PROCEDURE `Product`( INOUT d_id INT, INOUT d_fk_c INT, INOUT d_s VARCHAR(255), INOUT d_p DECIMA
USE `data_p`;
DROP PROCEDURE IF EXISTS `Product`;
DELIMITER $$
USE `data_p`$$
CREATE DEFINER=`data_s_admin`@`...` PROCEDURE `Product`(
INOUT d_id INT,
INOUT d_fk_c INT,
INOUT d_s VARCHAR(255),
INOUT d_p DECIMAL,
INOUT d_c_a DATE,
INOUT d_o_p DECIMAL,
INOUT d_s_c DECIMAL,
INOUT d_x_s VARCHAR(20),
INOUT d_d_w VARCHAR(20),
INOUT d_fk_c_a INT,
INOUT d_s enum('ac','in','de')
)
BEGIN
DECLARE cs_id INT;
DECLARE cs_fk_c INT;
DECLARE cs_s VARCHAR(255);
DECLARE cs_p DECIMAL;
DECLARE cs_c_a DATE;
DECLARE cs_o_p DECIMAL;
DECLARE cs_s_c DECIMAL;
DECLARE cs_x_s VARCHAR(20);
DECLARE cs_d_w VARCHAR(20);
DECLARE cs_fk_c_a INT;
DECLARE cs_s enum('ac','in','de');
SELECT
d_id ,
d_fk_c ,
d_s,
d_p ,
d_c_a ,
d_o_p ,
d_s_c ,
d_x_s,
d_d_w,
d_fk_c_a,
d_s
)
INTO
cs_id,
cs_fk_c,
cs_s,
cs_p,
cs_c_a,
cs_o_p,
cs_s_c,
cs_x_s,
cs_d_w,
cs_fk_c_a,
cs_s
FROM
data_p.cas
WHERE
cs_s = d_s AND cs_s = 'ac';
END $$
DELIMITER ;
当我单击data_s==>存储过程时,我创建了新的存储过程,然后粘贴了这段代码,
我的错误是:
语法错误:“USE”在此位置不是有效的输入
语法错误:如果:此位置意外
有什么问题?我真的很想解决这个问题,以了解有多少行受到影响
我在数据库“data_s”中创建存储过程,并从“data_p”返回所有数据
谁能帮帮我吗
非常感谢您在使用对象编辑器时提供的帮助(在模式树的上下文菜单中选择“创建存储过程…”时会得到这些帮助),您不需要添加所有装饰。只需编写存储过程,无需使用分隔符和DROP。应用更改时,您将看到MySQL Workbench自动为您创建一个USE命令(取决于您单击哪个模式触发SP编辑器)。在再次创建现有SP之前,应手动删除该SP
但是,如果改用SQL编辑器,则需要所有的修饰。虽然这是一个老问题,但没有看到答案,但我设法解决了同样的问题 文件可能是通过BOM另存为UTF8(或内容是从此类文件复制的) 在这种情况下,请尝试以UTF8格式保存文件(不带BOM),然后重新运行代码 对我来说,它解决了同样的问题 注: 1) 例如,可以使用Notepadd++更改编码。
2) 请注意,BOM是字节顺序标记的首字母缩写,它是文件开头的一个短字节序列,用于标记文件的编码。谢谢您的回答,但该过程返回空字段,如果我在“创建过程()中添加数据库表的11个inout字段,则会显示此错误。”无效参数预期值为11。嗯,这听起来像是另一个问题,例如,使用错误数量的参数或类似参数调用过程。与原问题无关。也许你应该接受这个答案,如果它使你更进一步,并打开一个新的一个与新问题的细节?我解决了参数数量的问题,我现在的问题“它返回空字段”与我的第一个问题有关,因为我只是在删除存储过程之后选择*:删除过程如果存在产品;从数据_p.cas中选择*;“sql”选项卡上的分隔符|用于执行sql查询它工作并显示所有行。但是,当我创建一个新的存储过程并放入相同的查询时,它不接受数据库数据中的select*或use data\u p。它不起作用。谢谢,它真的很有帮助。我很挣扎,很惊讶为什么我不能加载文件。