Tavin_77
2017-04-05 01:40
采纳率: 100%
浏览 5.8k

在sql存储过程中怎么判断一个变量值在其表内是否存在,并返还bool值?

做一个添加学生信息的函数,想输入一个学生的ID,调用存储过程来判断表内是否已有该学生的ID,如果有返回bool的true,没有返回false。
谢谢大神指教!不尽感激!

  • 写回答
  • 好问题 提建议
  • 关注问题
  • 收藏
  • 邀请回答

6条回答 默认 最新

  • Tavin_77 2017-04-05 16:38
    已采纳

    耗时一整天 各种翻书查资料 找到了自认最合适我目的的方法 希望也能给其他人带来有用信息

    CREATE PROCEDURE [dbo].[usp_IsLineIDExist]
    @v_lineID int,
    @v_exist int output
    AS

    SET NOCOUNT ON

    BEGIN
    IF EXISTS(SELECT [lineID] FROM [dbo].[Line] WHERE [lineID]=@v_lineID)
    BEGIN
    SET @v_exist=1
    END
    ELSE
    BEGIN
    SET @v_exist=0
    END
    END

    已采纳该答案
    评论
    解决 无用
    打赏 举报
  • 这个例子差不多,自己完善下;

     begin
      select 字段 into 变量 from 表名 where 条件;
    exception
      when no_data_found then
        --提示表中没有数据
    end;
    
    评论
    解决 无用
    打赏 举报
  • Tavin_77 2017-04-05 02:40

    图片说明@写给初学者的几封信

    评论
    解决 无用
    打赏 举报
  • 75闪光雷 2017-04-05 03:35

    select * from yourtable where id=你传入的ID;
    如果 返回结果,你就return TRUE;
    else return false;

    评论
    解决 无用
    打赏 举报
  • zhangyuanyincsdn 2017-04-05 04:32

    说明:这种问题定义一个数据库函数来处理,会更好,实现如下,请参考:

    -- 定义一个函数来处理会更好
    -- 参数说明:studentId 学生ID(需要传入)
    delimiter $
    create function checkStudentIsExist(studentId varchar(32))
    returns int(1) language sql
    begin
    -- 定义判断标识符
    declare cnt int(1) default 0;

    -- 查询学生表 (tab_student) 中改studentId对应的数据条数
    select count(1) into cnt from tab_student where student_id = studentId;
    
    -- 判断是否存在, 1 表示存在;0 表示不存在
    if(cnt > 0) then 
        return 1;
    else 
        return 0;
    

    end;
    delimiter ;

    请自行替换函数中的表名及字段。

    评论
    解决 无用
    打赏 举报
  • zhangyuanyincsdn 2017-04-06 01:53

    【补充】:

    以下需在mysql数据库中执行, 若为其他库(Oracle、DB2等)需参考其格式稍作修改,大致都雷同:

    -- 创建表
    create table tab_student(student_id varchar(32) primary key);

    -- mysql数据库,启用可创建自定义函数
    set global log_bin_trust_function_creators=TRUE;

    -- 删除函数
    drop function checkStudentIsExist;

    -- 创建函数
    delimiter $
    create function checkStudentIsExist(studentId varchar(32))
    returns int(1) language sql
    begin
    -- 定义判断标识符
    declare cnt int(1) default 0;

    -- 查询学生表中改studentId对应的数据条数
    select count(1) into cnt from tab_student where student_id = studentId;
    
    -- 判断是否存在, 1 表示存在;0 表示不存在
    if(cnt > 0) then 
        return 1;
    else 
        return 0;
        end if;
    

    end;
    delimiter ;

    评论
    解决 无用
    打赏 举报

相关推荐 更多相似问题