sybasesql
A. 利用sql server 資料庫的存儲過程連接sybase資料庫
存儲過程(stored
procere)是一組為了完成特定功能的sql
語句集,經編譯後存儲在資料庫。中用戶通過指定存儲過程的名字並給出參數(如果該存儲過程帶有參數)來執行它。
在sql
server
的系列版本中存儲過程分為兩類:系統提供的存儲過程和用戶自定義存儲過程。系統過程主要存儲在master
資料庫中並以sp_為前綴,並且系統存儲過程主要是從系統表中獲取信息,從而為系統管理員管理sql
server
提供支持。通過系統存儲過程,ms
sql
server
中的許多管理性或信息性的活動(如了解資料庫對象、資料庫信息)都可以被順利有效地完成。盡管這些系統存儲過程被放在master
資料庫中,但是仍可以在其它資料庫中對其進行調用,在調用時不必在存儲過程名前加上資料庫名。而且當創建一個新資料庫時,一些系統存儲過程會在新資料庫中被自動創建。用戶自定義存儲過程是由用戶創建並能完成某一特定功能(如查詢用戶所需數據信息)的存儲過程。
B. Sybase資料庫與sql server有什麼區別嗎
你好,目前目前大型的資料庫都採用oracle,中小型的用sqlServer,建議用sqlserver或者mysql。
sybase與sqlsrver的內在區別就是:
1.Sybase沒有用戶自定義函數。
2.判斷fetch成功的全局變數是@@SQLstatus,而不是@@fetch_status。
3.沒有set,賦值與查詢通用select。
4.沒有top,返回N行要使用set rowcount N / set rowcount 0
5.raiserror 22009 " "--> raiserror( ' ',16,1)
6.游標一定要在過程中使用,不能單獨在查詢中使用。
7.銷毀游標要加cursor關鍵字.如:deallocate cursor cur_tmp
8.沒有bigint類型。
9.create table #t(id numeric(12,0) identity not null),不支持int型,且不能設置起始值和步進值。
10.不能alter一個存儲過程,要先drop掉再create。
11.沒有len函數,使用char_length或datalength等效。
12.通過sysindexes中的doampg列可返回某表的行數,rowcnt(doampg) 。
13.convert函數沒有120格式(yyyy-mm-dd hh:mm:ss),需要使用select convert(char(4),datepart(year,getdate()))+ '- '+right( '0 '+convert(varchar(2),datepart(month,getdate())),2)+ '- '+right( '0 '+convert(varchar(2),datepart(day,getdate())),2)+ ' '+convert(char(10),getdate(),8)
14.charindex不能從被查找字元串中按指定位置查找某字元串。
15.不能使用rtrim函數將數值型轉為字元型。
16.沒有cast函數,數值型到字元型轉移使用select convert(varchar(10),123)
17.沒有replace函數。
18.沒有left函數,只有right函數。
19.不支持在欄位上加[]。
20.select語句中不支持變數累加,例如:select @SQL=@SQL+colname from tablename
21.在過程及視圖中系統會自動將select * 變為select 列1,列2...
22.varchar最大支持16384個位元組(SQLServer中是8000) 。
23.Sybase不支持表變數。
24.Sybase不支持instead of觸發器。
25.Sybase沒有調度(註:定時執行某個操作) 。
C. sql怎麼導入sybase資料庫里的一個數據表
用工具把,mssql沒這么智能,navicat下個破解版的 有導入導出功能
D. Sybase SQL Anywhere 怎麼取資料庫第一行
Sybase公司的資料庫產品有 大型資料庫:Sybase sqlserver 中型資料庫:Sybase adaptive server 小型資料庫:Sybase sql anywhere
E. 關於SYBASE SQL的問題,哪位仁兄幫解決一下。
SQL Server預設情況下建立的索引是非聚簇索引,由於非聚簇索引不重新組織表中的數據,而是對每一行存儲索引列值並用一個指針指向數據所在的頁面。換句話說非聚簇索引具有在索引結構和數據本身之間的一個額外級。一個表如果沒有聚簇索引時,可有250個非聚簇索引。每個非聚簇索引提供訪問數據的不同排序順序。在建立非聚簇索引時,要權衡索引對查詢速度的加快與降低修改速度之間的利弊。另外,還要考慮這些問題:
1、索引需要使用多少空間。
2、合適的列是否穩定。
3、索引鍵是如何選擇的,掃描效果是否更佳。
4、是否有許多重復值。
對更新頻繁的表來說,表上的非聚簇索引比聚簇索引和根本沒有索引需要更多的額外開銷。對移到新頁的每一行而言,指向該數據的每個非聚簇索引的頁級行也必須更新,有時可能還需要索引頁的分理。從一個頁面刪除數據的進程也會有類似的開銷,另外,刪除進程還必須把數據移到頁面上部,以保證數據的連續性。所以,建立非聚簇索引要非常慎重。非聚簇索引常被用在以下情況:
1、某列常用於集合函數(如Sum,....)。
2、某列常用於join,order by,group by。
3、查尋出的數據不超過表中數據量的20%。
三、覆蓋索引(covering indexes)的使用
覆蓋索引是指那些索引項中包含查尋所需要的全部信息的非聚簇索引,這種索引之所以比較快也正是因為索引頁中包含了查尋所必須的數據,不需去訪問數據頁。如果非聚簇索引中包含結果數據,那麼它的查詢速度將快於聚簇索引。
但是由於覆蓋索引的索引項比較多,要佔用比較大的空間。而且update操作會引起索引值改變。所以如果潛在的覆蓋查詢並不常用或不太關鍵,則覆蓋索引的增加反而會降低性能。
F. sybase 下sql查詢語句問題
使用外聯接。
僅當至少有一個同屬於兩表的行符合聯接條件時,內聯接才返回行。內聯接消除與另一個表中的任何行不匹配的行。而外聯接會返回
FROM
子句中提到的至少一個表或視圖的所有行,只要這些行符合任何
WHERE
或
HAVING
搜索條件,資料庫管理系統將檢索通過左向外聯接引用的左表的所有行,以及通過右向外聯接引用的右表的所有行。完整外部聯接中兩個表的所有行都將返回。
根據您說的情況,SQL如下:
SELECT
A.code,
A.name,
B.note
FROM
A
LEFT
JOIN
B
ON
A.code=B.code;
如果您使用的是Sybase資料庫,那麼這個SQL應該這樣寫:
SELECT
A.code,
A.name,
B.note
FROM
table_a
A,
table_b
B
WHERE
A.code
*=
B.code;
注意:用*=代替LEFT
JOIN。
如果您使用11.9.2及以上的Sybase版本,還可以這樣寫:
SELECT
A.code,
A.name,
B.note
FROM
A
LEFT
OUTER
JOIN
B
ON
A.code
=
B.code;
G. 求sybase sql anywhere5.0以上版本下載地址
http://www.sybase.com.cn/gvswse/site/china/sdn/iAnyDevDownload.jsp
H. oracle sql與sybase sql
SELECT COUNT(*),tbb.trans_date, tbb.trans_code
FROM tba,tbb
WHERE tba.trans_code =tbb.trans_code
GROUP BY tbb.trans_date,tbb.trans_code
這樣其實效果是一樣的,sybase不支持子查詢很討厭
I. sybase資料庫查詢數據
1.log文件用ultraedit就可以打開,下載一個安裝就可;
2.我遇到的db文件,都是asa資料庫的(sybase
sql
anywhere
7)可安裝之後,打開\%sybase%\win32\dbisqlc.exe,輸入用戶名密碼,瀏覽到該db文件,就可用sql語句對其內容進行查詢。
另外,我在網上也搜到了一個方法:
後來裝了個power
build
8,裡面就有一步是要裝sybase
7的資料庫。安裝完之後,就可以在控制面板的管理工具下面的odbc管理器中,添加sybase
驅動的這種db格式的數據源,然後就可以在office
access中導入這個odbc數據源,查看錶裡面的文件了。需要注意的是:db
文件的默認用戶名密碼是dba:sql,這是需要輸入odbc的。
J. 求教一下sybase 專家,sybase資料庫的sql語句可以在where條件加if then 么
你可以改造一下你的sql語句。
任何一個rdbms都不會支持你在where條件中加入if @loginname<>'' then 這樣的條件的。 從邏輯上改造一下。
select * from EC_CARD
where charindex('N',EC_CARD.is_del) > 0
and @loginname<>'' and charindex(@loginname, EC_CARD.login_name) >0
我不知道你們的業務邏輯對於@loginname是如何處理的。
其實你也可把sql改造成:
if @loginname<>'' then
select * from EC_CARD
where charindex('N',EC_CARD.is_del) > 0
and charindex(@loginname, EC_CARD.login_name) >0
else
其它業務邏輯。