Mysql 存储过程问题

问题描述

大家好,我遇到一个 很诡异的问题 今天写了一个存储过程 /PROCEDURE `video_center`.`updateusercourse`(IN id VARCHAR(20),IN videoname VARCHAR(50),IN author_id INT(11),IN vedio_id INT(11),OUT mychr VARCHAR(200))这个只是代码的开始的一部分 /**用户的名字*/ DECLARE authorname VARCHAR(20); SELECT `name` INTO authorname FROM `vc_user` WHERE id=304633; SELECT CONCAT('better hope myVar is not null', 'author_id',authorname) INTO mychr;以上只是部分代码 存储过程本身编译是通过的 但是问题是 我 用select into 给变量赋值的时候出现了 问题SELECT `name` INTO authorname FROM `vc_user` WHERE id=304633;首先这条sql 语句如果单独执行不赋值的话 是能查询出来值的 然后 使用这条sql 语句 给返回的值 赋值 可以怎么也付不了值 不知道什么原因,我用java 调用这个存储过程 返回的值始终是 nullSELECT CONCAT('better hope myVar is not null', 'author_id',authorname) INTO mychr; 那位大牛给看看 这方面的问题 不胜感激。

解决方案

DECLARE authorname varchar(100) DEFAULT ''; 如果差不到authorname,则authorname默认为null。此时 SELECT CONCAT('better hope myVar is not null', 'author_id',authorname) INTO mychr; 也将为null

时间: 2024-11-03 01:05:22

Mysql 存储过程问题的相关文章

CI调用存储过程很慢怎么提速,mysql存储过程本身执行很快,但是在php调用就要0.8s

问题描述 CI调用存储过程很慢怎么提速,mysql存储过程本身执行很快,但是在php调用就要0.8s $this -> db -> reconnect(); $mysqli = new mysqli(); $mysqli -> query(""SET NAMES utf8""); if (mysqli_connect_errno()) { printf('Connect failed: %s ' mysqli_connect_error()); e

MySql存储过程 带参数处理方式

下文介绍的MySql存储过程是带参数的存储过程(动态执行SQL语句),该MySql存储过程是根据用户输入的条件和排序方式查询用户的信息,排序条件可以没有调用方式: call GetUsersDynamic('age<=30',''); /********动态查询用户的信息********/     CREATE PROCEDURE GetUsersDynamic(WhereCondition varchar(500),OrderByExpress varchar(100))     begin 

当PHP遇到MySQL存储过程

1.MySQL存储过程 我们常用的操作数据库语言SQL语句在执行的时候需要要先编译,然后执行,而存储过程(Stored Procedure)是一组为了完成特定功能的SQL语句集,经编译后存储在数据库中,用户通过指定存储过程的名字并给定参数(如果该存储过程带有参数)来调用执行它. 一个存储过程是一个可编程的函数,它在数据库中创建并保存.它可以有SQL语句和一些特殊的控制结构组成.当希望在不同的应用程序或平台上执行相同的函数,或者封装特定功能时,存储过程是非常有用的.数据库中的存储过程可以看做是对编

PHP和MySQL存储过程的实例演示

以下的文章主要是向大家介绍的是PHP和MySQL存储过程的实例演示,我前两天在相关网站看见PHP和MySQL存储过程的实例演示的资料,觉得挺好,就拿出来供大家分享.希望在大家今后的学习中会有所帮助.   PHP与MySQL存储过程 实例一:无参的存储过程     $conn = MySQL_connect('localhost','root','root') or die ("数据连接错误!!!"); MySQL_select_db('test',$conn); $sql = &quo

PHP调用MySQL存储过程

mysql|存储过程 返回单个数据:1.1:创建MySQL存储过程: DELIMITER $$ DROP PROCEDURE IF EXISTS `test`.`proc_test` $$CREATE PROCEDURE `test`.`proc_test` (out a int)BEGIN    select count(*) into a from tblname;END $$ DELIMITER ; 1.2:PHP调用: $db->query("CALL test.proc_test

php调用mysql存储过程和函数的方法

mysql|存储过程|函数 存储过程和函数是MySql5.0刚刚引入的.关于这方面的操作在PHP里面没有直接的支持.但是由于Mysql PHP API的设计,使得我们可以在以前的PHP版本中的mysql php api中支持存储过程和函数的调用. 在php中调用存储过程和函数.     1.调用存储过程的方法.       a.如果存储过程有 IN/INOUT参数,声明一个变量,输入参数给存储过程,该变量是一对,       一个php变量(也可以不必,只是没有php变量时,没有办法进行动态输入

MySQL存储过程、函数、触发器和视图的权限检查

当存储过程.函数.触发器和视图创建后,不单单创建者要执行,其它用户也可能需要执行,换句话说,执行者有可能不是创建者本身,那么在执行存储过程时,MySQL是如何做权限检查的? 在默认情况下,MySQL将检查创建者的权限.假设用户A创建了存储过程p()访问表T,并把execute的权限赋给了B,即使用户B没有访问表T的权限,也能够通过执行存储过程p()访问表T. 下面看一个例子: 首先,我们创建一个表test.t和两个用户a,b,并把权限赋予用户a root@(none) 05:39:45>crea

MySQL存储过程里动态SQL的使用

MySQL的存储过程不好用,一般在应用开发过程中不建议使用.但有时候在数 据迁移等环境中,特别涉及到复杂点的逻辑处理,就需要存储过程的配合了,当 然,用其他语言写程序实现也是可以的,不过效率估计没有直接在数据库中操作 高. 有时候数据所在的表是不确定的,需要根据实际情况临时决定表名, 这时候就是动态SQL的用武之地了,以下示例展示了在一次数据导出的过程中使用 动态SQL的存储过程例子: delimiter // CREATE PROCEDURE `proc_rt_imp_group`() BEG

mysql存储过程BEGIN END复合语句用法示例

  mysql存储过程BEGIN END复合语句用法示例 begin_label:] BEGIN [statement_list] END [end_label] 存储子程序可以使用BEGIN ... END复合语句来包含多个语句.statement_list 代表一个或多个语句的列表.statement_list之内每个语句都必须用分号(;)来结尾. 复合语句可以被标记.除非begin_label存在,否则end_label不能被给出,并且如果二者都存在,他们必须是同样的. 请注意,可选的[N

java调用mysql存储过程实例分析

  本文实例讲述了java调用mysql存储过程的方法.分享给大家供大家参考.具体如下: 数据库的测试代码如下 : 1.新建表test ? 1 2 3 4 5 create table test( field1 int not null ) TYPE=MyISAM ; insert into test(field1) values(1); 2.删除已存在的存储过程: ? 1 2 3 -- 删除储存过程 delimiter // -- 定义结束符号 drop procedure p_test; 3