當前位置:首頁 » 存儲配置 » 存儲過程字元串包含

存儲過程字元串包含

發布時間: 2024-08-09 07:02:11

『壹』 oracle資料庫存儲過程問題: 傳入一個字元串(字元串格式如:「辣椒_食品,西紅柿_食品,板鞋_

數組在Oracle裡面使用不怎麼方便,一般情況下很少使用,給你提個新方法實現你的功能。

設定資料庫結構:

sql">CREATETABLEGOODS
(
PMVARCHAR2(20BYTE),--品名
FLVARCHAR2(20BYTE),--分類
RQDATE,--日期
BZVARCHAR2(50BYTE)--備注
);

存儲過程如下:

CREATEORREPLACEprocerePROC_split(In_StringINVARCHAR2)is
v_split1VARCHAR2(10)DEFAULT',';
v_split2VARCHAR2(10)DEFAULT'_';
lenNUMBERDEFAULT0;
nStrVARCHAR2(200);
nStr1VARCHAR2(40);
nStr2VARCHAR2(20);
nStr3VARCHAR2(20);

placeNUMBER(10)default1;
begin
--輸入串格式
--'辣椒_食品,西紅柿_食品,板鞋_服飾,植物油_食品,領帶_食品,'
len:=length(In_String);
IFlen<1THEN
RETURN;
ENDIF;
nStr:=In_String;
place:=INSTR(nStr,v_split1,1,1);
WHILE(place>0)
LOOP
nStr1:=SUBSTR(nStr,1,place-1);
nStr:=SUBSTR(nStr,place+1);

place:=INSTR(nStr1,v_split2,1,1);
IF(place>0)THEN
nStr2:=SUBSTR(nStr1,1,place-1);
nStr3:=SUBSTR(nStr1,place+1);
UPDATEgoodsSETrq=SYSDATEWHEREpm=nStr2ANDfl=nStr3;
//dbms_output.put_line('nStr2=['||nStr2||'],nStr3=['||nStr3||']');
ENDIF;
place:=INSTR(nStr,v_split1,1,1);
ENDLOOP;
COMMIT;
endPROC_split;
/

測試語句:

DECLARE
IN_STRINGVARCHAR2(32767);

BEGIN
IN_STRING:='辣椒_食品,西紅柿_食品,板鞋_服飾,植物油_食品,領帶_食品,';
PROC_SPLIT(IN_STRING);
COMMIT;
END;

我的調試輸出是:

nStr2=[辣椒],nStr3=[食品]
nStr2=[西紅柿],nStr3=[食品]
nStr2=[板鞋],nStr3=[服飾]
nStr2=[植物油],nStr3=[食品]
nStr2=[領帶],nStr3=[食品]

這裡面只用了兩個函數:INSTR,SUBSTR.

『貳』 Oracle中怎樣用存儲過程將一段字元串以逗號為界截取,並將得到的子串存到另一張表中

『叄』 ORACLE 存儲過程中的....是什麼意思如下 ' || '''' || 'yyyy-mm-dd' || '''' || '

|| 是字元串連接符號
'''' 四個單引號,第1,4個單引號是正常的單引號,第2個單引號是轉義字元,第3個單引號,編譯後想保留的單引號。
最終目的 就是to_char(a.txntimestamp, 'yyyy-mm-dd') 這樣的格式
這里頭不是直接寫sql文,而是用字元串拼接成新的sql字元串。

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

『伍』 存儲過程 單引號

1) 可以用''''表示字元串中的一個單引號,
如:set @a = '''' + 'xxxx' + ''''
或者 set @account = '''xxxx'''

查詢分析器中執行 Print ''''
結果為 '

2)用Char(39),上例變為:set @a = char(39) + 'xxxx' + char(39)

查詢分析器中執行 Select char(39) + 'xxxx' + char(39)
結果為 'xxxx'

『陸』 sqlserver資料庫存儲過程返回值只能是integer類型嗎 不能返回字元串嗎

樓主所說的這種是返回語句執行後影響的行數,是只有int型的,如樓上定義的,可以返回多種類型,還可以返回記錄集

create procere usp_select
@where nvarchar(100)
as
begin
select * from mytable where condition=@where
end
return
go
--------------------------------------
存儲過程

當 SET NOCOUNT 為 ON 時,不返回計數(表示受 Transact-SQL 語句影響的行數)。
當 SET NOCOUNT 為 OFF 時,返回計數。

如果存儲過程中包含的一些語句並不返回許多實際的數據,則該設置由於大量減少了網路流量,因此可顯著提高性能。

『柒』 關於存儲過程的引號,頭暈了

這個引號 主要是看你的參數具體的值
你上面所舉的例子,在我看來可能是你理解錯了,注意你的引號到底是加上什麼位置

你這里的語句補全後,大致應該是這樣的:
'xxxxx' + @N + 'zzzzz'
假設@N = 'yyyyy' 時,拼接後就是 xxxxxyyyyyzzzzz
3引號的情況:
'''xxxxx''' + @N + '''zzzzz'''
仍然讓@N = 'yyyyy',拼接後就是 'xxxxx'yyyyy'zzzzz'

1個引號時,就是表示所轄內容為字元串
3個引號時,第一個表示字元串前引號,第二個是轉義字元,第三個表示引號(字元內容)

熱點內容
電腦新伺服器地址 發布:2024-11-25 13:24:02 瀏覽:918
視頻壓縮安卓 發布:2024-11-25 13:02:18 瀏覽:341
當貝上傳應用 發布:2024-11-25 13:01:23 瀏覽:272
中國聯通湖北伺服器地址 發布:2024-11-25 13:00:38 瀏覽:747
訪問內網計算機 發布:2024-11-25 12:37:53 瀏覽:969
蘋果文件夾名字大全 發布:2024-11-25 12:28:03 瀏覽:590
ipad上b站緩存分屏 發布:2024-11-25 12:27:59 瀏覽:981
資料庫日誌文件查看 發布:2024-11-25 12:17:28 瀏覽:48
騰訊視頻明明緩存了看不了 發布:2024-11-25 12:08:01 瀏覽:182
存儲區域網路分布 發布:2024-11-25 12:07:12 瀏覽:389