存儲過程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 的值就行了,它會自動順序執行的。