从我的C#中,我在运行时创建数据表。我想将这个数据表传递给存储过程,以便数据将一起插入到表中。 我使用MySQL作为数据库。在SQL-Server中,多个插入的MySQL通过xml等效的是什么?使用存储过程在MySQL中批量插入
我生成XML数据集,并传递给存储过程:
CREATE DEFINER=`root`@`localhost` PROCEDURE `RouteLocationVehicleTimeInsert`(
IN xml VARCHAR(1000000)
)
BEGIN
SET @x=1;
SET @val=xml;
WHILE @x<=4 DO
SET @vehicleId=EXTRACTVALUE(@val, 'NewDataSet/Table1/vehicle_id[[email protected]]');
SET @routeId = EXTRACTVALUE(@val, 'NewDataSet/Table1/route_id[[email protected]]');
SET @locationId = EXTRACTVALUE(@val, 'NewDataSet/Table1/location_id[[email protected]]');
SET @arrivalTime = EXTRACTVALUE(@val, 'NewDataSet/Table1/arrival_time[[email protected]]');
INSERT INTO `rm.routelocation_fm.vehicle_time`(`vehicle_id`,`route_id`,`location_id`,`arrival_time`)
VALUES(@vehicleId,@routeId,@locationId,@arrivalTime);
SET @[email protected]+1;
END WHILE;
[email protected]@
但它并不能帮助。当我测试写入SP的SQL语句I给出了含多处值在同一列中,像如下
SET @val='<NewDataSet>
<Table1>
<vehicle_id>1</vehicle_id>
<route_id>5</route_id>
<location_id>1</location_id>
<arrival_time>00:00</arrival_time>
</Table1>
<Table1>
<vehicle_id>2</vehicle_id>
<route_id>5</route_id>
<location_id>2</location_id>
<arrival_time>00:00</arrival_time>
</Table1></NewDataSet>';
SET @x=1;
SET @vehicle_id= EXTRACTVALUE(@val, 'NewDataSet/Table1/vehicle_id[1]');
SELECT @vehicle_id;
它在同一列中给出的结果作为1 1。他们是两个记录。
是的,我设法如下通过以XML格式的数据,SET @ VAL =” 1 LOCATION_ID> 00:00 ARRIVAL_TIME> 2 LOCATION_ID> 00:00 ARRIVAL_TIME> '; SET @ x = 1; SET @locationId = EXTRACTVALUE(@val,'NewDataSet/Table1/location_id [$ @ x]'); SELECT @locationId; –
Sangeetha
但是,当我测试这个使用select语句结果越来越“1 2”instaer 1 – Sangeetha
你可以添加到您的原始帖子... – BK435