MSSQL sql server 2000写法
go 
create proc loadUser
@uname varchar(16),
@upwd varchar(16),
@count int output
as
select * from  users  where uname=@uname  and upwd=@upwdif(@@error=0 and @@rowcount = 1) 
set @count = 1;
else  set  @count=0;go

在Mysql  当中怎么写呀 
如何 定义一个变量 
create procedure login(uname varchar(64),upwd varchar(64),out counts int)
[color=#00FFFF]DECLARE   iCount   int;

begin
SET   iCount   =   10;  
SELECT   iCount;
end[/color]对了请问下 IF EXISTS(SELECT * FROM sysdatabases WHERE name='bookshop') 这样的语句 mysql 支持吗?就是
判断 有没有查出内容来??

解决方案 »

  1.   

    如何 定义一个变量
    你的方法是对的,用 DECLARE iCount INT; 来定义变量。IF EXISTS()这种语句目前还不被MySQL 5.x支持,实现相同功能的做法是再定义一个变量,然后利用select .. into来对这个变量赋值,然后判断是否exists符合条件的记录。如果多记录,可以改为 select count(*) into ..
    mysql> delimiter //
    mysql>
    mysql> CREATE PROCEDURE login (uname varchar(64),upwd varchar(64),out counts int)
        ->   BEGIN
        ->     DECLARE iCount INT;
        ->     DECLARE bExist INT DEFAULT 0;
        ->
        ->     SET iCount = 10;
        ->
        ->  SELECT 1 into bExist FROM t WHERE name=uname; #use the variable to check the IF EXISTS
        ->
        ->  IF bExist>0 then
        ->          SELECT  iCount,'Record Found.';
        ->  ELSE
        ->          SELECT  iCount,'NOT EXISTS';
        ->  END IF;
        ->
        ->   END;
        ->
        -> //
    Query OK, 0 rows affected (0.00 sec)mysql>
    mysql> delimiter ;
    mysql> call login('f3','pswd',@i);
    +--------+---------------+
    | iCount | Record Found. |
    +--------+---------------+
    |     10 | Record Found. |
    +--------+---------------+
    1 row in set (0.00 sec)Query OK, 0 rows affected (0.02 sec)mysql> call login('unkonw','pswd',@i);
    +--------+------------+
    | iCount | NOT EXISTS |
    +--------+------------+
    |     10 | NOT EXISTS |
    +--------+------------+
    1 row in set (0.00 sec)Query OK, 0 rows affected, 1 warning (0.02 sec)mysql>类似的语法可以在MySQL的官方网站查看详细的说明和例子。http://dev.mysql.com/doc/refman/5.1/zh/stored-procedures.html
    第20章:存储程序和函数
    目录20.1. 存储程序和授权表20.2. 存储程序的语法20.2.1. CREATE PROCEDURE和CREATE FUNCTION20.2.2. ALTER PROCEDURE和ALTER FUNCTION20.2.3. DROP PROCEDURE和和DROP FUNCTION20.2.4. SHOW CREATE PROCEDURE和SHOW CREATE FUNCTION20.2.5. SHOW PROCEDURE STATUS和SHOW FUNCTION STATUS20.2.6. CALL语句20.2.7. BEGIN ... END复合语句20.2.8. DECLARE语句20.2.9. 存储程序中的变量20.2.10. 条件和处理程序20.2.11. 光标20.2.12. 流程控制构造20.3. 存储程序、函数、触发程序和复制:常见问题20.4. 存储子程序和触发程序的二进制日志功能
      

  2.   

    DECLARE  iCount  int;
    begin
    SET  iCount  =  10; 
    SELECT  iCount; MYSQ中是可以的对了请问下 IF EXISTS(SELECT * FROM sysdatabases WHERE name='bookshop') 这样的语句 mysql 支持吗?就是
    判断 有没有查出内容来??select count(*) into @ee FROM sysdatabases WHERE name='bookshop'
    if @ee>1 then
    select 'OK';
    ELSE
    select 'NO';
    END IF