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 阅读 9 次 更新于 2025-07-21 09:37:42 我来答关注问题0
  • 当然可以,就是在mysql存储过程中使用动态sql,就可以拼接sql,然后执行了。给你复制一段,如果不满意,自己搜索 mysql 存储过程 动态sql 就可以了 DROP PROCEDURE IF EXISTS SearchByDoctor;CREATE PROCEDURE SearchByDoctor( IN DoctorId VARCHAR(50), IN deptId VARCHAR(50), IN beginDate...

  • 如果调用的是函数,则可以直接通过select function()来执行,无需额外的调用步骤。在上述示例中,使用了本地连接来执行存储过程调用,包括设置变量、调用存储过程以及查询结果。在PHP脚本中,通过mysql_connect()函数建立数据库连接,随后使用mysql_select_db()选择数据库。之后,通过一系列的mysql_query()调...

  • 存储过程需要在数据库中编写和存储,相比于应用程序的代码,存储过程的执行效率相对较低。这是因为存储过程的执行需要经过多次判断和查询,而且每次执行都需要从数据库中读取存储过程的定义。因此,如果存储过程的执行非常频繁,会给数据库带来较大的负担和性能瓶颈。另外,存储过程的执行计划也可能得不到优化。

  •  信必鑫服务平台 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;

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

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

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

mySQL相关话题

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