mysql存储过程能不能直接执行拼接的sql语句

当然可以,就是在mysql存储过程中使用动态sql,就可以拼接sql,然后执行了。给你复制一段,如果不满意,自己搜索 mysql 存储过程 动态sql 就可以了 DROP PROCEDURE IF EXISTS SearchByDoctor;CREATE PROCEDURE SearchByDoctor( IN DoctorId VARCHAR(50), IN deptId VARCHAR(50), IN beginDate...
mysql存储过程能不能直接执行拼接的sql语句
当然可以,就是在mysql存储过程中使用动态sql,就可以拼接sql,然后执行了。

给你复制一段,如果不满意,自己搜索 mysql 存储过程 动态sql 就可以了

DROP PROCEDURE IF EXISTS SearchByDoctor;CREATE PROCEDURE SearchByDoctor( IN DoctorId VARCHAR(50), IN deptId VARCHAR(50), IN beginDate VARCHAR(20), IN endDate VARCHAR(20), IN StandDeptId VARCHAR(50), IN OperationFlag VARCHAR(50), IN SsczflId VARCHAR(50), OUT OperNum INT, OUT AvgDangerIndex DOUBLE, OUT OperGrCase INT) BEGINDECLARE cal1 VARCHAR(800); DECLARE cal2 VARCHAR(800);SET cal1="SELECT COUNT(1),AVG(DANGER_INDEX) INTO @para1,@para2 FROM yw_ssxxb WHERE 1=1 "; SET cal2="SELECT COUNT(1) INTO @para3 FROM gr_grbw WHERE OPE_RELID IN (SELECT RELID FROM yw_ssxxb WHERE 1=1"; #拼接医生id SET cal1=CONCAT(cal1," ","AND OPEDOC_ID = ","'",DoctorId,"'"); SET cal2=CONCAT(cal2," ","AND OPEDOC_ID = ","'",DoctorId,"'"); #拼接科室idIF deptId <>'' THEN SET cal1=CONCAT(cal1,"AND DEPT_ID =","'",deptId,"'"); END IF; #拼接开始结束日期 IF beginDate<>'' AND endDate <>'' THEN SET cal1=CONCAT(cal1," ","AND OPER_AT BETWEEN ","'",beginDate,"'"," AND ","'",endDate,"'"); END IF; #拼接标准科室 IF StandDeptId<>'' THEN SET cal1=CONCAT(cal1," ","AND DEPT_ID IN ( SELECT ID FROM department WHERE STAND_DEPT_ID = ","'",StandDeptId,"'",")"); END IF; #拼接数据来源 IF OperationFlag <>'' THEN SET cal1=CONCAT(cal1," ","AND OPEPARTKINDID IN (SELECT ID FROM zh_ssczfl WHERE FLAG= ","'",OperationFlag,"'",")"); END IF; #拼接手术操作类别 IF SsczflId <> '' THEN SET cal1=CONCAT(cal1," ","AND OPEPARTKINDID = ","'",SsczflId,"'"); END IF; SET cal2 =CONCAT(cal2,")"); SET @sql1=cal1; SET @sql2=cal2;PREPARE stmt1 FROM @sql1;EXECUTE stmt1;DEALLOCATE PREPARE stmt1 ; PREPARE stmt2 FROM @sql2;EXECUTE stmt2;DEALLOCATE PREPARE stmt2 ; SET OperNum=@para1; SET AvgDangerIndex=@para2; SET OperGrCase=@para3; END;2016-11-15
mengvlog 阅读 118 次 更新于 2025-10-31 01:59:59 我来答关注问题0
  • 存储过程需要在数据库中编写和存储,相比于应用程序的代码,存储过程的执行效率相对较低。这是因为存储过程的执行需要经过多次判断和查询,而且每次执行都需要从数据库中读取存储过程的定义。因此,如果存储过程的执行非常频繁,会给数据库带来较大的负担和性能瓶颈。另外,存储过程的执行计划也可能得不到优化。

  •  信必鑫服务平台 MySQL里面sql语句调用存储过程,该如何写?

    CREATE PROCEDURE sp_add(a int, b int,out c int)begin set c=a+ b;end;调用过程:call sp_add (1,2,@a);select @a;

  • 1. EXEC命令简介 EXEC是MySQL中的一个命令,可以将脚本文件读入MySQL客户端并运行。在MySQL中,可以使用该命令来执行存储过程、触发器、函数和视图等各种类型的对象。EXEC命令的语法如下:EXECUTE sql_statement;其中sql_statement是存储过程、触发器、函数或视图的SQL语句。2. EXEC命令的优点 使用EXEC命令有...

  • 存储过程需要参数才能执行。如果提供的参数不正确,存储过程将无法正常执行。请确保提供与存储过程定义匹配的参数。二、解决方案 1.检查权限 如果存储过程无法运行,请检查您是否有足够的权限。如果不是,请联系数据库管理员以获取必要的权限。确保在创建存储过程时指定了超级用户。2.检查语法 在创建存储过程...

  •  翡希信息咨询 mysql 函数 与 存储过程 有什么区别? 如果不好回答 可以只说说 优缺点

    函数:函数只能有输入参数,不能有输出参数或输入输出参数。存储过程:存储过程可以有输入参数、输出参数以及输入输出参数。调用方式:函数:函数通常通过SELECT语句调用,例如SELECT myfun;。函数必须返回一个值,且这个值可以直接在SELECT语句中使用。存储过程:存储过程通过CALL语句调用,例如CALL myproc;。

檬味博客在线解答立即免费咨询

mySQL相关话题

Copyright © 2023 WWW.MENGVLOG.COM - 檬味博客
返回顶部