當前位置:首頁 » 存儲配置 » 存儲過程拼接

存儲過程拼接

發布時間: 2022-08-28 05:14:50

『壹』 sql server 的存儲過程字元串怎麼拼接的

你的問題,問的不是很清楚,你是想問,如果將查詢結果拼接為字元串嗎?

有兩種辦法,如果是拼接為一個字元串,可以用變數,如:

DECLARE@NamesVARCHAR(MAX)
SELECT@Names=ISNULL(@Names+',','')+t.nameFROMsys.tablesASt
SELECT@Names
--返回:spt_fallback_db,spt_fallback_dev,spt_fallback_usg,spt_monitor,MSreplication_options

如果是用SQL中,可以用xml path如:

SELECTSTUFF(
(SELECT','+t.nameFROMsys.tablesAStFORXMLPATH(''))
,1,1,'')
--返回spt_fallback_db,spt_fallback_dev,spt_fallback_usg,spt_monitor,MSreplication_options

『貳』 oracle 存儲過程拼接傳參問題!

你可以拼接'to_date(' || 字元串類型日期 || 『,YYYY-MM-DD HH24:MI:SS)』 || ....
日期格式可根據需要調整

『叄』 存儲過程中的字元串拼接問題

alter proc [dbo].[fun_query_pm]
@ii_pm_name varchar(20)
as
begin
declare @where varchar(20)
begin
set @where = 'missaka'
set @where = @where + @ii_pm_name
print @where
print @ii_pm_name
end
end
exec p_test '10011'

你把char換成varchar就可以顯示了,這主要是char是固定長度,當set @where='misaka'時,
實際上@where中的位元組段已經填滿,後面空的被空格字元填滿,所以當你再進行連接的時候就沒位置連了,
當然不能連接了。用varchar就不會了

『肆』 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;

『伍』 存儲過程拼接問題

執行語句也需要作為字元串變數拼接後執行

createorreplaceprocereemplist(enameinvarchar,empcuroutsys_refcursor)
is
v_where_ddvarchar2(10000);
sqlstrvarchar2(10000);--增加這個
begin
ifenameisnotnullthen
v_where_dd:=v_where_dd||'andename='''||ename||'''';
endif
dbms_output.put_line(v_where_dd);
sqlstr:='selectempno,enamefromempwhere1=1'||v_where_dd;--增加這個
executeimmediatesqlstr;--執行
endemplist

『陸』 我想通過存儲過程將一個表查詢出來的多行結果,拼接成一條,如何實現 1 2 3 a 1 2 3 b 拼成 1 2 3 a b

其實這個可以用sql的自連接就可以解決了,不過用存儲過程也可以,思路差不多,首先你在if或者是while中判斷前三個欄位相等,如果相等就把後面的欄位進行拼接,用函數啊concat或者是||什麼的的,有一個關鍵的地方就是在判斷裡面加一個變數,這個變數就是以前三個欄位分組得到的最大值,比如:1,2,3,a ; 1,2,3,b ; 1,2,3,c ; 1,3,4,a ; 1,3,5,b ; 1,5,4,c ,明顯1,2,3分組得到為3,這個就決定你後面拼接的長度,這里拼出來是 1,2,3,a,b,c , 而後面的幾組明顯拼出來沒有那個長度,這時就需要用上面提到的變數,來做--操作,來使後面補上『』 。 不懂再問
還有 ,我建議這種專業的問題去專業的網站論壇上問,那邊的效率比較高,而且學到的東西也多些,比如csdn,itpub。。。。

『柒』 存儲過程拼接了兩個sql,如何執行;

這個是oracle的存儲過程。你只要在執行時候輸入參數_tableName,v_pkKey ,v_pkValue 的值就行了,它會自動順序執行的。

『捌』 SQL 執行存儲過程,字元串參數如何拼接

變數直接寫,要連接字元串的話,用
||
這個符號,後面的字元串用單引號引!
例如
變數
V_str
字元串'
select
emp
from
table
where
'
連接後為:
------------------------------------------------
'
select
emp
from
table
where
'
||
V_str
------------------------------------------------
希望可以幫助到你!

熱點內容
循跡小車演算法 發布:2024-12-22 22:28:41 瀏覽:82
scss一次編譯一直生成隨機數 發布:2024-12-22 22:04:24 瀏覽:956
嫁接睫毛加密 發布:2024-12-22 21:50:12 瀏覽:975
linuxbin文件的安裝 發布:2024-12-22 21:46:07 瀏覽:798
vlcforandroid下載 發布:2024-12-22 21:45:26 瀏覽:664
電腦做網關把數據發送至伺服器 發布:2024-12-22 21:44:50 瀏覽:432
新華三代理什麼牌子的伺服器 發布:2024-12-22 21:33:21 瀏覽:342
歡太會員密碼是什麼 發布:2024-12-22 20:57:28 瀏覽:74
sqllocaldb 發布:2024-12-22 20:07:08 瀏覽:126
如何找到我的伺服器 發布:2024-12-22 19:52:14 瀏覽:301