900字范文,内容丰富有趣,生活中的好帮手!
900字范文 > mysql存储过程是不是不能穿sql语句_mysql存储过程能不能直接执行拼接的sql语句...

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

时间:2020-05-07 21:46:51

相关推荐

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

展开全部

当然可以,就是在mysql存储过程中使用动态sql,就可以拼接sql,然62616964757a686964616fe58685e5aeb931333361323562后执行了。

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

DROPPROCEDUREIFEXISTSSearchByDoctor;

CREATEPROCEDURESearchByDoctor(

INDoctorIdVARCHAR(50),

INdeptIdVARCHAR(50),

INbeginDateVARCHAR(20),

INendDateVARCHAR(20),

INStandDeptIdVARCHAR(50),

INOperationFlagVARCHAR(50),

INSsczflIdVARCHAR(50),

OUTOperNumINT,

OUTAvgDangerIndexDOUBLE,

OUTOperGrCaseINT

)

BEGIN

DECLAREcal1VARCHAR(800);

DECLAREcal2VARCHAR(800);

SETcal1="SELECTCOUNT(1),AVG(DANGER_INDEX)INTO@para1,@para2FROMyw_ssxxbWHERE1=1";

SETcal2="SELECTCOUNT(1)INTO@para3FROMgr_grbwWHEREOPE_RELIDIN(SELECTRELIDFROMyw_ssxxbWHERE1=1";

#拼接医生id

SETcal1=CONCAT(cal1,"","ANDOPEDOC_ID=","'",DoctorId,"'");

SETcal2=CONCAT(cal2,"","ANDOPEDOC_ID=","'",DoctorId,"'");

#拼接科室id

IFdeptId<>''THEN

SETcal1=CONCAT(cal1,"ANDDEPT_ID=","'",deptId,"'");

ENDIF;

#拼接开始结束日期

IFbeginDate<>''ANDendDate<>''THEN

SETcal1=CONCAT(cal1,"","ANDOPER_ATBETWEEN","'",beginDate,"'","AND","'",endDate,"'");

ENDIF;

#拼接标准科室

IFStandDeptId<>''THEN

SETcal1=CONCAT(cal1,"","ANDDEPT_IDIN(SELECTIDFROMdepartmentWHERESTAND_DEPT_ID=","'",StandDeptId,"'",")");

ENDIF;

#拼接数据来源

IFOperationFlag<>''THEN

SETcal1=CONCAT(cal1,"","ANDOPEPARTKINDIDIN(SELECTIDFROMzh_ssczflWHEREFLAG=","'",OperationFlag,"'",")");

ENDIF;

#拼接手术操作类别

IFSsczflId<>''THEN

SETcal1=CONCAT(cal1,"","ANDOPEPARTKINDID=","'",SsczflId,"'");

ENDIF;

SETcal2=CONCAT(cal2,")");

SET@sql1=cal1;

SET@sql2=cal2;

PREPAREstmt1FROM@sql1;

EXECUTEstmt1;

DEALLOCATEPREPAREstmt1;

PREPAREstmt2FROM@sql2;

EXECUTEstmt2;

DEALLOCATEPREPAREstmt2;

SETOperNum=@para1;

SETAvgDangerIndex=@para2;

SETOperGrCase=@para3;

END;

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。