首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >MySQL存储过程

MySQL存储过程
EN

Stack Overflow用户
提问于 2010-08-18 19:41:44
回答 3查看 195关注 0票数 2

我有几个关于存储过程的问题。经过几个小时的谷歌搜索,我真的找不到任何真正简单的查询示例。

代码语言:javascript
运行
复制
CREATE PROCEDURE test1(IN uid INT)
BEGIN
    SELECT USER_NAME FROM USERS WHERE USER_ID = uid;
END //

这个查询接受' uid‘作为输入,并为该uid选择用户名,有人能解释一下我如何在php中调用这个过程吗,还有,我如何将实际的行输出到php var?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-08-18 21:12:09

您应该考虑使用返回单个VARCHAR的存储函数来执行此操作:

代码语言:javascript
运行
复制
CREATE FUNCTION test1(uid INT) RETURNS VARCHAR(100)
BEGIN
    DECLARE V_RETURN_VAL VARCHAR(100);

    SELECT USER_NAME 
    INTO V_RETURN_VAL
    FROM USERS 
    WHERE USER_ID = uid;

    RETURN V_RETURN_VAL;
END //
票数 0
EN

Stack Overflow用户

发布于 2010-08-18 19:43:56

AFAIK你只需要在查询中把call放在它之前:

代码语言:javascript
运行
复制
$result = mysql_query("CALL test1(".$args.")");
$username = mysql_result($result);
票数 1
EN

Stack Overflow用户

发布于 2011-01-26 22:12:56

您只需使用"CALL“并检索行,就像它是一个普通查询一样。

唯一不同的情况是该过程返回多个结果集,在这种情况下,您必须使用一个给出下一个结果集的方法遍历所有结果集(即使是空的结果集)。

输出参数是浪费时间的,因为它们需要更多的往返和服务器端状态来获取结果;如果使用它们,您总是会编写更多的代码,并且会有更多的bug。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3511645

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档