Jump to content


Photo

Mysql Procedure


  • Faça o login para participar
2 replies to this topic

#1 MarkMelo

MarkMelo

    Novato no fórum

  • Usuários
  • 6 posts
  • Sexo:Não informado

Posted 08/12/2009, 21:52

Ae galera, tudo bem?

To precisando de uns toques com criação de procedures no mySQL... Eu dei uma fuçada pela net mas não achei como resolver direito o meu problema..

Eu vou escrevê-la para SQL Server para ajudar a explicar melhor..

create proc add_friend 
@user_id int,
@friend_id int
as
declare @maxid int;
select @maxid = (select max(id) from user_friends);
  if(@maxid is null) begin
     select @maxid = 1;
     insert into user_friend(@maxid, @user_id, @friend_id);
  end 
  else begin
     select @maxid = @maxid + 1;
     insert into user_friend(@maxid, @user_id, @friend_id);
  end

Gostaria de sabe como isso ficaria em mySQL.. Eu já tentei muitas formas e todas deram erradas...

A tabela user_friends tem o id (prim. key) q pela proc vai ser automaticamente gerada, o campo pra user_id e outro pra friend_id..

Por favor, ajudem ae!

Abraços.

#2 Felipe Pena

Felipe Pena

    O temor do Senhor é o princípio da sabedoria

  • Ex-Admins
  • 6441 posts
  • Sexo:Masculino

Posted 08/12/2009, 22:46

Olá, segue um exemplo bem simples baseado no teu código.

mysql> create table teste_forum (id int, nome varchar(40) not null, idade int);
Query OK, 0 rows affected (0.01 sec)

mysql> DELIMITER $
mysql> CREATE PROCEDURE teste_proc(nome varchar(40), idade int)
    -> BEGIN
    ->   DECLARE max_id INT;
    ->  
    ->   SELECT IFNULL(MAX(id)+1, 1) INTO max_id FROM teste_forum;
    ->   
    ->   INSERT INTO teste_forum VALUES (max_id, nome, idade);
    -> END;
    -> $
Query OK, 0 rows affected (0.00 sec)

mysql> DELIMITER ;
mysql> call teste_proc('a', 1);
Query OK, 1 row affected (0.01 sec)

mysql> call teste_proc('b', 2);
Query OK, 1 row affected (0.00 sec)

mysql> select * from teste_forum;
+------+------+-------+
| id   | nome | idade |
+------+------+-------+
|    1 | a    |     1 | 
|    2 | b    |     2 | 
+------+------+-------+
2 rows in set (0.00 sec)

Felipe Pena
[...] ó terra, terra, terra; ouve a palavra do Senhor. — Jeremias 22:29

#3 MarkMelo

MarkMelo

    Novato no fórum

  • Usuários
  • 6 posts
  • Sexo:Não informado

Posted 09/12/2009, 20:26

Funcionou cara!

Muito obrigado pela ajuda,

Abraços




1 user(s) are reading this topic

0 membro(s), 1 visitante(s) e 0 membros anônimo(s)

IPB Skin By Virteq