sql server 存储过程create PROCEDURE [dbo].[Adm_ProductNormAdd]
@NormName    nvarchar(20),-----名称
@NormID    varchar(20),----ID  AS
begin
declare @rID varchar(10)-----产品规格自增编号
if(exists(select RulsName from tDataRuls where RulsName=@NormName ))
begin
   return -1;----产品规格名称存在
end
if(exists (select RulsID from tDataRuls where RulsID=@NormID ))
begin
return -2;-----识别码存在
endinsert into tDataRuls
(RulsName, RulsID) 
    values
(@NormName,@Normid  )
select @rID=@@identity;
return @rID;
ENDmysql 存储过程,return 用什么来代替呢?我现在用的是set赋值 为啥语法不对呢?CREATE PROCEDURE `test`.`Adm_ProductNormAdd` (
  NormName VARCHAR (20),
  NormID VARCHAR (20),
  OUT ret INT

BEGINDECLARE rID VARCHAR(10);IF(EXISTS(SELECT RulsName FROM tDataRuls WHERE RulsName=NormName ))
SET ret=-1;
END IFINSERT INTO tDataRuls
(RulsName, RulsID) 
    VALUES
(NormName,Normid);SELECT rID=LAST_INSERT_ID();
SET @rID=rID;END $$

解决方案 »

  1.   

    这帖就是  http://bbs.csdn.net/topics/391840184  吧, 呵呵
      

  2.   

    请教sql server中的 return 在mysql 里面是否在创建自定义函数里面才能使用
    这句话在mysql 存储过程或自定义函数里面不能执行吗?错误在哪呀
    IF(EXISTS(SELECT RulsName FROM tDataRuls WHERE RulsName=NormName))
      

  3.   

    已搞定,通过创建自定义函数解决。
    CREATE PROCEDURE `test`.`Adm_ProductNormAdd` (  NormName VARCHAR (20),  NormID VARCHAR (20),  OUT ret INT) BEGINDECLARE rID VARCHAR(10);IF(EXISTS(SELECT RulsName FROM tDataRuls WHERE RulsName=NormName ))  THEN RETURN -1;END IF;INSERT INTO tDataRuls (RulsName, RulsID)     VALUES (NormName,Normid);
    /*
    SELECT rID=LAST_INSERT_ID();SET @rID=rID;
    */
    END $$