Mysql 简单Select语句中的存储过程问题Varchar中的问题

Mysql 简单Select语句中的存储过程问题Varchar中的问题,mysql,sql,stored-procedures,procedure,Mysql,Sql,Stored Procedures,Procedure,这是我的 这是我的桌子: 并插入了两条记录 我可以使用常规Select语句选择记录 SELECT * FROM `vehicle` where VehicleCode = '100' 我创建了要选择的过程 我的程序在这里 当我尝试访问我的过程时,我没有得到任何结果 CALL `GetVehicle`(100); 我没有得到任何结果 CALL `GetVehicle`(100); 我所犯的错误是什么?我如何修复它???尝试在中更改车辆代码 CREATE PROCEDURE GetVehicl

这是我的

这是我的桌子:

并插入了两条记录

我可以使用常规Select语句选择记录

SELECT * FROM `vehicle` where VehicleCode = '100'
我创建了要选择的过程

我的程序在这里

当我尝试访问我的过程时,我没有得到任何结果

CALL `GetVehicle`(100);
我没有得到任何结果

CALL `GetVehicle`(100);

我所犯的错误是什么?我如何修复它???

尝试在中更改车辆代码

CREATE PROCEDURE GetVehicle(IN Vcode VARCHAR(255))

使用Vcode,然后在where语句中使用它。

我尝试了您的代码。这很好,但您应该在架构中插入记录,并将存储的参数名更改为不同于字段名,例如,您可以将其命名为Vcode

因此,您的模式应该是

CREATE TABLE IF NOT EXISTS `vehicle` (
  `AutoID` int(11) NOT NULL AUTO_INCREMENT,
  `VehicleCode` varchar(20) NOT NULL,
  `NumberSeats` int(3) NOT NULL,
  `VehicleNumber` varchar(10) NOT NULL,
  `MaximumAllowed` int(2) NOT NULL,
  `City` varchar(4) NOT NULL,
  `State` varchar(4) NOT NULL,
  `Phone` int(12) DEFAULT NULL,
  `Insurance` varchar(30) NOT NULL,
  `VehicleType` varchar(10) NOT NULL,
  `Address` varchar(255) NOT NULL,
  `Tax` varchar(50) NOT NULL,
  `InsurancePhoto` varchar(255) NOT NULL,
  `RCPhoto` varchar(255) NOT NULL,
  `CreatedAt` datetime NOT NULL,
  `CreatedBy` varchar(30) NOT NULL,
  `UpdatedAt` datetime NOT NULL,
  `UpdatedBy` varchar(30) NOT NULL,
  `ActiveStatus` tinyint(1) NOT NULL,
  `IsDeletable` tinyint(1) NOT NULL,
  PRIMARY KEY (`AutoID`),
  UNIQUE KEY `VehicleCode` (`VehicleCode`)
) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=2 ;

insert into vehicle(VehicleCode,NumberSeats,VehicleNumber,MaximumAllowed,
                    City,State,Phone,Insurance,VehicleType,Address,Tax,
                   InsurancePhoto,RCPhoto,CreatedAt,CreatedBy,UpdatedAt,
                   UpdatedBy,ActiveStatus,IsDeletable) 
                   values('100',4,'DES547',7,'Los','CA',44554,'45879','sedan',
                          'ssssss','55', 'sdsdsds','asdasdas',Now(),'saasda',
                           Now(),'asdasda',1,1);
然后按照以下步骤创建存储过程

DELIMITER //
create PROCEDURE GetVehicle(IN vcode VARCHAR(255))
 BEGIN
 SELECT * 
 FROM vehicle
 WHERE VehicleCode = vcode;
 END //
DELIMITER ;
现在尝试调用存储过程,它可以正常工作

call GetVehicle(100);

准确地说,它应该是创建过程GetVehicleIN v_代码VARCHAR255,并在where条件下使用v_代码。谢谢,我将VehicleCode修改为VCode,但当我调用GetVehicle101时,我没有得到任何结果result@AbhikChakraborty你是对的。对不起,输入错误。@Stackerman,我只是想澄清一下,在你的问题中,你表示你打了100,100现在有效,但不是101吗?另外,当您选择*from vehicle时,您是否会得到与您提供的ID相同的结果?100或101这只是参数,当我使用查询调用GetVehicle100或调用GetVehicle101时,问题是不会返回任何结果。是的,我得到的是select*from vehicle的结果,其中VehicleCode='100'我也这样做了,我正在尝试使用它phpmyadmin,这会成为一个问题吗?我在mysql工作台上尝试过它,它工作得很好,尝试调用这个过程,比如调用GetVehicle'100';告诉我通过php从查询中得到的结果,但不是在phpmyadmin中。如何从phpmyadmin运行该过程?尝试从左窗格运行程序转到您的数据库名称展开它并确定程序并展开它单击GetVehicle程序,执行例程窗口将显示在值字段中写入100,然后按go。结果应显示给youTry。
DELIMITER //
create PROCEDURE GetVehicle(IN vcode VARCHAR(255))
 BEGIN
 SELECT * 
 FROM vehicle
 WHERE VehicleCode = vcode;
 END //
DELIMITER ;
call GetVehicle(100);