存储过程sql语句拼接
@query=" and rc.AdminConSender=" + @Account
if isnull(@Account,'')<>''
set @isEmptyAccount='and rc.AdminConSender='+ CONVERT(NVARCHAR(20), @Account)
㈡ sql存储过程中根据判断拼接sql语句然后执行
有图有真相
㈢ sql存储过程中根据判断拼接sql语句然后执行
不知道你为什么要这样写,,,
if
xxx
sql1
select
count()
xx
from
sql1
end
else
sql2
select
xxxx
from
sql2
xxx
为什么不采用这种方式?
如果非要拼接,还要定义@变量,
你后续还是要判断from后面引用哪个,
因为from
后面是没有
a
or
b的写法的
㈣ SQL 执行存储过程,字符串参数如何拼接
变量直接写,要连接字符串的话,用
||
这个符号,后面的字符串用单引号引!
例如
变量
V_str
字符串'
select
emp
from
table
where
'
连接后为:
------------------------------------------------
'
select
emp
from
table
where
'
||
V_str
------------------------------------------------
希望可以帮助到你!
㈤ ORACLE存储过程中拼接sql语句 后在EXCUTE的时候总是报错(详见下面)
对于这种动态SQL的错误,我的建议是把PS_SQL类似这样的字符变量通过dbms_output.putline('PS_SQL
IS:'||PS_SQL);先在命令行打印出来看看,再去执行打印出来的SQL就知道哪个
引号
有问题。
㈥ mysql存储过程能不能直接执行拼接的sql语句
当然可以,就是在mysql存储过程中使用动态sql,就可以拼接sql,然后执行了。
给你复制一段,如果不满意,自己搜索 mysql存储过程动态sql就可以了
;
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(_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;
㈦ Oracle [存储过程] 执行动态拼接SQL语句并返回结果
建议你用 instr函数,v_sql条件改为
where instr(p_jbm,t.jbm)>0试试吧。
㈧ 存储过程拼接了两个sql,如何执行;
这个是oracle的存储过程。你只要在执行时候输入参数_tableName,v_pkKey ,v_pkValue 的值就行了,它会自动顺序执行的。