今早上刚看的存储过程,很是不明白
教材上的示例是
PHP codeCREAT PROCEDURE pr_demo_in(IN p_in INT) //这里的是p_in这个参数是只字段名吗?
BEGIN
SELECT p_in;
SET p_in;
SELECT p_in;
END;//=================================CREAT PROCEDURE sp_name()
BEGIN
SET @a = 5;    //这里的@ 是干嘛用的
SET @b = 5;
INSERT INTO t VALUES (@a);
SELECT s1 * @a FROM t WHERE s1 >=@b; //这一句的s1 * @a没明白,s1是什么
END;//下面是我自己写的一个,这个表中有 uid ,和u_name等字段,但是下面的语句提示第三行错误,把
WHERE uid=1去掉也是一样CREAT PROCEDURE pr_demo(IN u_name CHAR)
BEGIN
SELECT u_name WHERE uid=1;
SET u_name='hcf';
SELECT u_name WHERE uid=1;
END;

解决方案 »

  1.   

    这里的是p_in这个参数是只字段名吗?
    NO,是传入参数SELECT s1 * @a FROM t WHERE s1 >=@b; //这一句的s1 * @a没明白,s1是什么
    s1字段名,s1 * @a:字段值*变量@A的值SELECT u_name WHERE uid=1;->少了FROM
    SELECT u_name from tt WHERE uid=1;
      

  2.   

    p_in 只是这参数,与字段名没有什么必然的关系。select 123 ; 这样的语句只是通过SELECT语句进行输出。 同样 select  p_in;不过是把变量的内容输出。
      

  3.   

    这个语句在语法上并不正确,少了FROM。
      

  4.   

    CREAT 写错了CREATE  我把代码改过之后还是不行,代码如下PHP code
    CREATE PROCEDURE pr_demo( IN u_name CHAR )  //这里可以有多个参数吗
    BEGIN 
    SELECT u_name FROM user WHERE uid=1;    //找不到这里的错误
    SET u_name='hcf';
    SELECT u_name FROM user;
    END;
    CALL pr_demo('u_name');错误提示:
    #1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 3 
      

  5.   

    SELECT u_name FROM `user` WHERE uid=1
      

  6.   

    我用的是Wamp5,跟这个有关系吗?
      

  7.   

    你在MYSQL命令行下输入上述代码,看看有无问题
      

  8.   


    delimiter //
    CREATE PROCEDURE pr_demo( IN u_name CHAR )  //这里可以有多个参数吗
    BEGIN  
    SELECT u_name FROM user WHERE uid=1;    //找不到这里的错误
    SET u_name='hcf';
    SELECT u_name FROM user;
    END;
    //
    delimiter ;
    CALL pr_demo('u_name');
    在MYSQL的帮助文档中搜索一下 delimiter 的作用。
      

  9.   

    in p_in INT
    in表示是传入参数
    p_in是参数名
    INT表示是参数的类型变量前加@表示是全局变量第三行SELECT u_name WHERE uid=1;错误是因为没有用from指定要查询的数据表名