mysql编程调用_如何在MySQL中调用程序?

bd96500e110b49cbb3cd949968f18be7.png

I've started to examine Procedures in MySQL, but all my efforts don't work. Here is my Procedure Creation:

DELIMITER //

CREATE PROCEDURE test(IN a INT)

BEGIN

SELECT *

FROM `table`

WHERE `id` = a;

END

MySQL returns O.K., no errors.

DELIMITER ;

MySQL returns O.K., no errors.

But CALL-Statement does not work:

CALL test(8);

Returns an error:

#1312 - PROCEDURE dbxyz.test can't return a result set in the given context

Now, I don't know what I've made wrong: a mistake in Procedure-Cration or an error in CALL-Statement.

--> ##########################

As of 6th Feb. 2014:

Today, I've tried to find out, why my Stored Procedure does not work in Query Window of phpMyAdmin. A 'SELECT *' does not work within a Stored Procedure, but a SELECT column by column does work. Here is what I have found out: Use IN and OUT as well as INTO. Example:

DELIMITER //

CREATE PROCEDURE test(IN a INT, OUT b VARCHAR(12), OUT c INT)

BEGIN

SELECT b, c

FROM `table`

WHERE `id` = a

INTO b, c;

END

Now, this stored Procedure is able to run in phpMyAdmin:

call test(5, @result1, @result2);

SELECT @result1, @result2

If you just need ONE result instad of two or more, you could also use SET - Statement. Here we are:

DELIMITER //

CREATE PROCEDURE test(IN a INT, OUT b INT)

BEGIN

SET b = ( SELECT b

FROM table

WHERE id = a );

END

解决方案

see also comment above:

Today, I've tried to find out, why my Stored Procedure does not work.

A 'SELECT *' does not work within a Stored Procedure, but a SELECT

column by column does work. Here is what I have found out: DELIMITER

// CREATE PROCEDURE test(IN a INT, OUT b VARCHAR(12), OUT c INT) BEGIN

SELECT b, c FROM table WHERE id = a INTO b, c; END Now I can run my

Procedure: call test(5, @result1, @result2); SELECT @result1, @result2

– Peter Feb 6 '14 at 11:09

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值