全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:1589
推到 Plurk!
推到 Facebook!

請問有關SYBASE語法問題

答題得分者是:Mickey
JLATSTAR
一般會員


發表:8
回覆:16
積分:4
註冊:2007-05-08

發送簡訊給我
#1 引用回覆 回覆 發表時間:2007-05-14 15:23:22 IP:203.204.xxx.xxx 訂閱
以下為小弟設計語法,但執行後會出現問題

CREATE FUNCTION ADDMIN
(OTIME VARCHAR(4),
ADDM INT)
RETURNS VARCHAR(4)
DECLARE @SM INT ,@SH INT,@TTIME VARCHAR(4)
SET @SH=CAST(LEFT(OTIME,2) AS INT)
SET @SM=CAST(RIGHT(OTIME,2) AS INT)
SET @SM=@SM @ADDM
WHILE @SM<0
BEGIN
SET @SM=@SM 60
SET @SH=@SH-1
END
WHILE @SM>=60
BEGIN
SET @SM=@SM-60
SET @SH=@SH 1
END
IF @SH>10
SET @TTIME=CAST(@SH AS VARCHAR)
ELSE
SET @TTIME='0' CAST(@SH AS VARCHAR)
IF @SM>10
SET @TTIME=@TTIME CAST(@SM AS VARCHAR)
ELSE
SET @TTIME=@TTIME '0' CAST(@SM AS VARCHAR)
RETURN @TTIME
GO

這是由SQLServer修改成的,想修改到能於SyBase上執行
此語法用於幫時間增加分鐘數
Mickey
版主


發表:77
回覆:1882
積分:1390
註冊:2002-12-11

發送簡訊給我
#2 引用回覆 回覆 發表時間:2007-05-14 16:02:46 IP:218.163.xxx.xxx 訂閱
你好:

許久沒碰過 Sybase...

印象中....Sybase 好像沒有 Function 這種東東...
JLATSTAR
一般會員


發表:8
回覆:16
積分:4
註冊:2007-05-08

發送簡訊給我
#3 引用回覆 回覆 發表時間:2007-05-14 17:46:54 IP:203.204.xxx.xxx 訂閱
那在請問一下 Sybase 有PROCEDURE 嗎?
Mickey
版主


發表:77
回覆:1882
積分:1390
註冊:2002-12-11

發送簡訊給我
#4 引用回覆 回覆 發表時間:2007-05-14 20:07:47 IP:220.228.xxx.xxx 訂閱
呵呵.....有
===================引 用 JLATSTAR 文 章===================
那在請問一下 Sybase 有PROCEDURE 嗎?
JLATSTAR
一般會員


發表:8
回覆:16
積分:4
註冊:2007-05-08

發送簡訊給我
#5 引用回覆 回覆 發表時間:2007-05-15 09:45:04 IP:203.204.xxx.xxx 訂閱
感謝大大的回覆,最後想請問的是
Sybase 的PROCEDURE 能寫 傳入 舊時間,增加分鐘數 回傳 新時間 的程式嗎?
該如何寫?
Mickey
版主


發表:77
回覆:1882
積分:1390
註冊:2002-12-11

發送簡訊給我
#6 引用回覆 回覆 發表時間:2007-05-16 10:18:17 IP:218.163.xxx.xxx 訂閱
我已沒有 Sybase 的環境, 沒法試做...大概是這樣....

create procedure AddMinutes @aDateTime smalldatetime,@IncMinutes int, @Result smalldatetime output
as
begin
select @Result=dateadd(minute,@IncMinutes,@aDateTime)
return
end
go

-- Demo T-SQL
begin
declare @r1 smalldatetime
declare @r2 smalldatetime
select @r1=getdate()
print @r1
exec AddMinutes @r1,10,@r2 output
print @r2
end
go

如果只是要做到該功能....我記得...有內建的 "dateadd" Function...

===================引 用 JLATSTAR 文 章===================
感謝大大的回覆,最後想請問的是
Sybase 的PROCEDURE 能寫 傳入 舊時間,增加分鐘數 回傳 新時間 的程式嗎?
該如何寫?
編輯記錄
Mickey 重新編輯於 2007-05-16 10:46:12, 註解 無‧
JLATSTAR
一般會員


發表:8
回覆:16
積分:4
註冊:2007-05-08

發送簡訊給我
#7 引用回覆 回覆 發表時間:2007-05-16 13:50:36 IP:203.204.xxx.xxx 訂閱
經測試後 procedure是可以的

Demo T-SQL 有些問題 在此替 Mickey 版主更改一下
BEGIN
declare @r1 smalldatetime
declare @r2 smalldatetime
set @r1=getdate()

exec AddMinutes @r1,10,@r2 output
select @r1,@r2
end
go
已上測試於 SyBase Advantage 12.5.1版


===================引 用 Mickey 文 章===================
我已沒有 Sybase 的環境, 沒法試做...大概是這樣....

create procedure AddMinutes @aDateTime smalldatetime,@IncMinutes int, @Result smalldatetime output
as
begin
select @Result=dateadd(minute,@IncMinutes,@aDateTime)
return
end
go

-- Demo T-SQL
begin
declare @r1 smalldatetime
declare @r2 smalldatetime
select @r1=getdate()
print @r1
exec AddMinutes @r1,10,@r2 output
print @r2
end
go

如果只是要做到該功能....我記得...有內建的 "dateadd" Function...

===================引 用
JLATSTAR 文 章===================
感謝大大的回覆,最後想請問的是
Sybase 的PROCEDURE 能寫 傳入 舊時間,增加分鐘數 回傳 新時間 的程式嗎?
該如何寫?

系統時間:2024-05-16 3:19:44
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!