VARCHAR - mysql、sql、ストアドプロシージャ、プロシージャの単純選択文でのストアドプロシージャの問題

ここに私です フィドル

私のテーブルはここにあります:

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 ;

そして2つのレコードを挿入

INSERT INTO `vehicle` (`AutoID`, `VehicleCode`, `NumberSeats`, `VehicleNumber`, `MaximumAllowed`, `City`, `State`, `Phone`, `Insurance`, `VehicleType`, `Address`, `Tax`, `InsurancePhoto`, `RCPhoto`, `CreatedAt`, `CreatedBy`, `UpdatedAt`, `UpdatedBy`, `ActiveStatus`, `IsDeletable`) VALUES
(1, "100", 0, "", 0, "", "", 0, "", "", "", "", "", "", "0000-00-00 00:00:00", "", "0000-00-00 00:00:00", "", 0, 0),
(2, "101", 0, "", 0, "", "", NULL, "", "", "", "", "", "", "0000-00-00 00:00:00", "", "0000-00-00 00:00:00", "", 0, 0);

私は定期的な選択ステートメントを使用してレコードを選択することができます

SELECT * FROM `vehicle` where VehicleCode = "100"

私は選択する手続きを作成しました

私の手続きはここにあります

DELIMITER //
CREATE PROCEDURE GetVehicle(IN VCode VARCHAR(20))
BEGIN
SELECT *
FROM vehicle
WHERE VehicleCode = VCode;
END //
DELIMITER ;

私は私のプロシージャにアクセスしようとしているが、私は結果を得ていない。

CALL `GetVehicle`(100);

私はどんな結果も得ていない。

私がやっている間違いは何ですか?どうすれば修正できますか?

回答:

回答№1は0

VehicleCodeを変更してみてください

CREATE PROCEDURE GetVehicle(IN Vcode VARCHAR(255))

Vcodeに渡してからwhereステートメントで使用します。


回答№2の場合は0

私はあなたのコードを試してみましたが、あなたのスキーマにレコードを挿入し、格納されたパラメータ名をフィールド名とは違うものに変更する必要があります。例えば "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);

関連する質問
メニュー
最も人気のある