當前位置:首頁 » 存儲配置 » 存儲過程轉換

存儲過程轉換

發布時間: 2022-05-24 01:26:55

『壹』 存儲過程類型轉換

自己寫的么?
1有些地方沒必要4個單引號,3個就行,在sql中字元串的拼接語句中要表示1個單引號就得用兩個單引號,前一個表示轉義的意思,編程語言都有轉義一說
2因為是字元串拼接的,而@FormerPrice這些是money類型的,如果不轉換,就默認要把字元串轉換成money類型了,就會出錯。所以得把@FormerPrice之類的轉換成字元類型的,存儲過程修改如下
ALTER PROCEDURE [dbo].[SearchMerchandise]
@Category varchar(50),
@Brand varchar(50),
@Type varchar(50),
@FormerPrice money,
@LatterPrice money
AS
BEGIN
declare @QueryString varchar(100)
set @QueryString = 'select * from Merchandise where Category = ''' + @Category + ''' and Brand = ''' + @Brand + ''' '
SET NOCOUNT ON;

if @Type<>''
set @QueryString = @QueryString+' and Type=''' +@Type+ ''''
if @FormerPrice<>'' and @LatterPrice<>''
set @QueryString = @QueryString+' and PriceNow between '''+ convert(varchar(20),@FormerPrice) + ''' and ''' + convert(varchar(20),@LatterPrice) + ''''
if @FormerPrice<>'' and @LatterPrice=''
set @QueryString = @QueryString+' and PriceNow >=''' + convert(varchar(20),@FormerPrice) + ''''
if @FormerPrice='' and @LatterPrice<>''
set @QueryString = @QueryString+' and PriceNow <=''' + convert(varchar(20),@LatterPrice) + ''''

exec(@QueryString)
END
因為沒有表結果不能進行測試,所以可能會出錯,如果出錯就把表結果發一下,進行測試

『貳』 如何在sql server存儲過程中轉化數據類型

不一定非要在存儲過程中轉換,用普通的sql語句就可以,一般用cast函數。

測試方法:

創建表及插入數據:

createtabletest
(idint,
starttimevarchar(20));

insertintotestvalues(1,'2015-07-11');

將starttime欄位轉化為datetime類型:

selectcast(starttimeasdatetime)fromtest;

結果如圖,這時,starttime就轉成了datetime類型:

『叄』 如下圖,怎樣用存儲過程把第一個表中的數據轉換成第二表中去

創建存儲過程:
CREATE PROCEDURE [dbo].[sp_InsertData]
AS
BEGIN
insert into table2
select name,sum(case when ncourse=1 then cno else 0 end),
sum(case when ncourse=2 then cno else 0 end),
sum(case when ncourse=3 then cno else 0 end),
sum(case when ncourse=4 then cno else 0 end),
sum(case when ncourse=5 then cno else 0 end)'
from table1
group by name
END

然後調用存儲過程sp_InsertData

但你似乎不需要用存儲過程吧,直接執行那段insert語句就可以了

『肆』 oracle 存儲過程字元串轉化為date

可以使用to_date方法將字元串轉換為date類型:
示例:
SQL> select
to_date(to_char(sysdate,'yyyy-MM-dd
hh24:mi:ss'),'yyyy-MM-dd
hh24:mi:ss')
into
fTime
from
al;
執行結果:2015-11-06
22:20:27。
備註:存儲過程中的用法也是這樣的,沒有任何區別。
SELECT
to_date(to_char(sysdate-1,'yyyy-mm-dd')||'
23:59:59','yyyy-mm-dd
hh24:mi:ss')
INTO
END_TIME
FROM
DUAL;

『伍』 SQL SERVER 存儲過程,轉換成ORACLE存儲過程

你這個過程其實就是分頁查詢用戶信息是吧

--利用游標返回結果集
CREATEORREPLACEPACKAGEpkg_queryASTYPEcur_queryISREFCURSOR;
ENDpkg_query;


CREATEORREPLACEPROCEDUREUP_UserInfo_List_select
(
WhereSqlinvarchar2,--查詢條件
StartIndexinNumber,--當前頁
EndIndexinNumber,--每頁顯示記錄條數
RecordCountoutNumber,
v_curoutSYS_REFCURSOR)--返回的結果集
IS
v_sqlVARCHAR2(1000):='';--sql語句
BEGIN
--查總記錄數
v_sql:='SELECTTO_NUMBER(COUNT(*))FROMUserInfoWHERE1=1';
IFWhereSqlISNOTNULLorWhereSql<>''THEN
v_sql:=v_sql||WhereSql;
ENDIF;
EXECUTEIMMEDIATEv_sqlINTORecordCount;

--實現分頁查詢
v_sql:='SELECT*FROM(SELECTA.*,rownumrFROM(SELECTUserId,UserName,RoleId,IsLock,DescfromUserInfo';
IFWhereSqlISNOTNULLorWhereSql<>''THEN
v_sql:=v_sql||'WHERE1=1'||WhereSql||'ORDERBYUserId';
ENDIF;

v_sql:=v_sql||')AWHERErownum<='||EndIndex||')BWHEREr>='||StartIndex;
DBMS_OUTPUT.put_line(v_sql);

OPENv_curFORv_sql;

ENDUP_UserInfo_List_select;

--執行,plsql這里是看不到結果集,找到這個過程點測試,才能看到。當然你在程序里使用也是能返回的。
declare
RecordCountnumber:=0;
v_curpkg_query.cur_query;
begin
UP_UserInfo_List_select('',1,10,RecordCount,v_cur);
DBMS_OUTPUT.put_line(RecordCount);
end;

『陸』 SQL2008 存儲過程行列轉換

ALTERPROC[dbo].[Report_Sale_JXS_HFgongdan]
(@BeginDateDatetime
,@EndDatedatetime
,@Name1VARCHAR(50)
,@Name2VARCHAR(50))
AS
BEGIN
if@EndDate<='2010-01-01'
begin
select@EndDate=GETDATE()
end
SELECT
T0.CARDNAMEAS'客戶名稱',T0.CARDPHONEAS'客戶電話',T0.VINAS'車架號',T0.MNameAS'車型描述'
,T4.OColorNameAS'車身顏色',T0.NoteAS'備注',T0.JYNoteAS'建議',T6.U001AS'事業部',T4.CmpCodeAS'經銷商編號'
,T0.SaleNameAS'經銷商名稱',T0.SalePhoneAS'經銷商電話',CONVERT(VARCHAR(10),T0.DocDay,23)AS'來電日期'
--,T3.L1DESCAS'問題'

--,T3.L1AnswerAS'回答'

--,T3.L1ScoreAS'得分'
,MAX(CASEWHENT3.L1DESC='XXX問題'THENT3.L1AnswerEND)AS'XXX問題的回答'
--所有問題按上面那樣子寫出來
,MAX(CASEWHENT3.L1DESC='XXX問題'THENT3.L1ScoreEND)AS'XXX問題的得分'
--所有問題按上面那樣子寫出來
,T0.[Status]AS'回訪狀態',T0.DocTotalAS'綜合得分',T0.HFTypeNameAS'回訪類型',T2.userNameAS'回訪人員'
,casewhenT0.IsHFCG='1'then'是'
whenT0.IsHFCG='0'then'否'endAS'是否成功'
,casewhenT0.IsClose='1'then'是'
whenISNULL(T0.IsClose,0)='0'then'否'endas'是否結束'
FROMdmsSaleHFDJT0
innerJOINdmsSaleHFLXT1ONT0.HFTypeName=T1.[DESC]
innerjoindmsBaseUserT2onT0.HFPsnName=T2.userName
innerjOINdmssaleHFDJ1T3ONT3.ID=T0.ID
INNERjoindmsSaleOCarT4onT4.VIN=T0.VIN
innerjoindmsBaseUserT5onT5.userCode=T4.CmpCode
innerjoindmsBaseChinaT6ONT5.province=T6.Id
whereconvert(varchar(10),T0.DocDay,23)>=@BeginDate
andconvert(varchar(10),T0.DocDay,23)<=@EndDate
and(T0.HFTypeName=@Name1or@Name1='')
and(T0.HFPsnName=@Name2or@Name2='')
----------
GROUPBY'除T3.L1DESC、T3.L1Answer、T3.L1Score所有列'
END

或者直接在報表裡面列分組

『柒』 怎麼將mysql存儲過程轉換成oracle存儲過程

建議使用PowerDesigner將ORACLE轉換為物理模型,再轉換為邏輯模型,然後通過這個邏輯模型重新選擇DBMS(MYSQL),將其轉換為MYSQL的物理邏輯模型,在物理邏輯模型上更新觸發器,過程等對象,然後生成MYSQL的物理文件,或直接導入到MYSQL資料庫實例中。

『捌』 在sqlserver存儲過程中如何切換資料庫

不一定非要在存儲過程中轉換,用普通的sql語句就可以,一般用cast函數。

測試方法:

創建表及插入數據:
create table test
(id int,
starttime varchar(20));

insert into test values (1,'2015-07-11');

將starttime欄位轉化為datetime類型:
select cast(starttime as datetime) from test;

結果如圖,這時,starttime就轉成了datetime類型:

『玖』 存儲過程里變數怎麼轉換成字元串

字元型轉浮點型用atof
或者strtod(後者安全點),它的默認類型是double型。
用法:比方說你定義了CString的對象str,要想轉換為浮點型可以定義一個浮點型變數例如double
a
=
atof(str)就可以了

『拾』 存儲過程中如何將日期轉換成字元型

只要是日期型的傳進來就可以,不用管它格式,在過程里邊處理。

如果要規定格式的話,只能用字元型了。

你那樣直接傳的是字元型了,你只要把它轉換成日期型就可以了。

SQL> exec test(to_date('2010-07-08 12:00:00','hh24:mi:ss'), to_date('2010-07-25 12:00:00','hh24:mi:ss'));

或者是把過程的參數改成字元型的,在傳入的時候就不用to_date了,只要在使用的時候把它轉換成日期型就可以。
create or replace procere test (time1 in varchar2, time2 in varchar2)

熱點內容
頻率計源碼 發布:2024-09-08 07:40:26 瀏覽:778
奧迪a6哪個配置帶後排加熱 發布:2024-09-08 07:06:32 瀏覽:100
linux修改apache埠 發布:2024-09-08 07:05:49 瀏覽:208
有多少個不同的密碼子 發布:2024-09-08 07:00:46 瀏覽:566
linux搭建mysql伺服器配置 發布:2024-09-08 06:50:02 瀏覽:995
加上www不能訪問 發布:2024-09-08 06:39:52 瀏覽:811
銀行支付密碼器怎麼用 發布:2024-09-08 06:39:52 瀏覽:513
蘋果手機清理瀏覽器緩存怎麼清理緩存 發布:2024-09-08 06:31:32 瀏覽:554
雲伺服器的優點與缺點 發布:2024-09-08 06:30:34 瀏覽:734
上傳下載賺錢 發布:2024-09-08 06:14:51 瀏覽:258