多多色-多人伦交性欧美在线观看-多人伦精品一区二区三区视频-多色视频-免费黄色视屏网站-免费黄色在线

國(guó)內(nèi)最全I(xiàn)T社區(qū)平臺(tái) 聯(lián)系我們 | 收藏本站
阿里云優(yōu)惠2
您當(dāng)前位置:首頁(yè) > 數(shù)據(jù)庫(kù) > sybase > SYBASE數(shù)據(jù)庫(kù)操作筆記

SYBASE數(shù)據(jù)庫(kù)操作筆記

來(lái)源:程序員人生   發(fā)布時(shí)間:2013-10-10 01:17:55 閱讀次數(shù):3979次
SYBASE 數(shù)據(jù)庫(kù)操作筆記(轉(zhuǎn)自MaYong)
 
數(shù)據(jù)庫(kù)表名、列名(執(zhí)行嚴(yán)格的大小寫(xiě))
數(shù)據(jù)庫(kù)表名、列名識(shí)別大小寫(xiě)區(qū)分(即表名是大寫(xiě) 查詢(xún)時(shí)小寫(xiě)就錯(cuò)誤)
大小寫(xiě)敏感的問(wèn)題是因?yàn)樽址绊懙?,改為UTF8字符集后問(wèn)題解決。
 
SYBASE數(shù)據(jù)庫(kù)的缺陷(版本SYBASE ASE 15.5)(目前在使用過(guò)程中發(fā)現(xiàn)的數(shù)據(jù)庫(kù)本身的缺陷)
1.創(chuàng)建表是設(shè)置列的默認(rèn)值是不會(huì)檢測(cè)的(例如一列字段的數(shù)據(jù)類(lèi)型為VARCHAR,默認(rèn)值可以設(shè)置為數(shù)字2,可以正常創(chuàng)建表成功;但是當(dāng)插入數(shù)據(jù)時(shí)(不給此列插入值)就報(bào)錯(cuò)啦,不能正常插入數(shù)據(jù)。)可能數(shù)據(jù)庫(kù)創(chuàng)建表時(shí)沒(méi)有去驗(yàn)證默認(rèn)值吧。
解決方案只能是自己檢查好創(chuàng)建語(yǔ)句,嚴(yán)格遵守默認(rèn)值的數(shù)據(jù)類(lèi)型。
2.兼容性:不會(huì)自動(dòng)轉(zhuǎn)換數(shù)據(jù)類(lèi)型,與上面問(wèn)題類(lèi)似,INT型不能插入字符型的('1'),反之一樣。這是數(shù)據(jù)庫(kù)的嚴(yán)謹(jǐn)性可以理解,呵呵。
3.創(chuàng)建表與對(duì)表操作的語(yǔ)句不能直接放到循環(huán)或者判斷語(yǔ)句中,
SYSBASE是先執(zhí)行創(chuàng)建表的語(yǔ)句(看來(lái)創(chuàng)建表的待遇基本不是一般的高啊),
然后才執(zhí)行條件的判斷,這點(diǎn)壓根不符合程序的邏輯性。(不知SYBASE數(shù)據(jù)庫(kù)的工程師們是怎么想的)
解決方案,是再創(chuàng)建一個(gè)存儲(chǔ)過(guò)程,將要?jiǎng)?chuàng)建的表明傳給他,在判斷或循環(huán)是調(diào)用此存儲(chǔ)過(guò)程。
4.還有一些小問(wèn)題暫時(shí)就不說(shuō)啦。
 
--查詢(xún)數(shù)據(jù)庫(kù)中用戶(hù)表的名稱(chēng)
SELECT name FROM sysobjects WHERE type='U' order by name
 
--查詢(xún)數(shù)據(jù)庫(kù)中存儲(chǔ)過(guò)程的名稱(chēng)
SELECT name FROM sysobjects WHERE type = 'P'
 
--查詢(xún)數(shù)據(jù)庫(kù)中函數(shù)的名稱(chēng)
SELECT name FROM sysobjects WHERE type='SF'
 
--執(zhí)行存儲(chǔ)過(guò)程:exec 存儲(chǔ)過(guò)程名稱(chēng) 第一個(gè)參數(shù),第二個(gè)參數(shù)
exec dbo.Pro_CreateIndex js_seqsql, ssql_type
 
--查詢(xún)表的全部索引OBJECT_ID('表名') indid>0為索引類(lèi)型
SELECT name FROM sysindexes WHERE id = OBJECT_ID('js_seqsql') and indid>0
 
--刪除索引 表名.索引名稱(chēng)
DROP INDEX js_seqsql.js_seqsql_idx_ssql_type
 
--創(chuàng)建索引CREATE NONCLUSTERED INDEX 索引名稱(chēng)ON 表名(列名)
CREATE NONCLUSTERED INDEX js_seqsql_idx_ssql_type ON js_seqsql(ssql_type)
 
--字符串替換
str_Replace(原字符串,'要替換的字符','新字符')
 
--判斷表是否存在
SELECT OBJECT_ID('js_jobs')
SELECT 1 FROM sysobjects o, sysusers u WHERE o.uid=u.uid AND o.name = 'WARNINFO201103' AND u.name = 'dbo' AND o.type = 'U'
 
--Sybase數(shù)據(jù)庫(kù)錯(cuò)誤代碼:其中DESCRIPTION列即為錯(cuò)誤描述,@ERROR為錯(cuò)誤代碼編號(hào),可以自行修改查詢(xún)。
SELECT * FROM MASTER.DBO.SYSMESSAGES WHEREERROR=@ERROR
 
 
 
 
-- =============================================
-- Author:  MaYong
-- Create date: 2011-01-05
-- Description: 批量創(chuàng)建索引
-- 執(zhí)行示例:exec dbo.Pro_CreateIndex  表名,列名
-- =============================================
IF EXISTS (SELECT name FROM sysobjects
      WHERE name = 'Pro_CreateIndex' AND type = 'P')
   DROP PROCEDURE Pro_CreateIndex
GO
 
Create proc Pro_CreateIndex
(
@TableType  varchar(40),   --表名
@IndexName  varchar(150)   --索引名稱(chēng)
)
--With ENCRYPTION
AS
 
 declare
  @TableName varchar(80),
  @NewIndex  varchar(150)
 
 declare tableName_Cursor CURSOR FOR
  select name from dbo.sysobjects where name like @TableType+'%' and type='U' order by name
 
 set @NewIndex = 'idx_'+str_Replace(@IndexName,',','_')
 Open tableName_Cursor
 Fetch next from tableName_Cursor into @TableName
 
 if @@FETCH_STATUS <> 0
 begin
  DEALLOCATE tableName_Cursor
  RollBack TRANSACTION
  Return 0
 end
 
 while @@FETCH_STATUS = 0
 BEGIN 
   --判斷索引是否存在 存在則刪除
   declare @OldIndex varchar(150)
   set @OldIndex=@TableName+'_'+@NewIndex
      IF EXISTS (SELECT 1 FROM sysindexes WHERE id = OBJECT_ID(@TableName) AND name = @OldIndex  and indid>0)
   --IF EXISTS (SELECT 1 FROM sysindexes i, sysobjects o, sysusers u WHERE  o.id = i.id AND o.uid = u.uid AND i.name = @OldIndex AND u.name = 'dbo' AND o.name = @TableName AND i.indid > 0)
            BEGIN
             setuser 'dbo'
                declare @drop_sql varchar(1000)
    select @drop_sql='DROP INDEX '+ @TableName + '.' +  @OldIndex
    exec (@drop_sql)
    print @drop_sql
            END
            --異常處理
            IF (@@error != 0)
            BEGIN
             PRINT 'Error Drop Index :', @OldIndex
             SELECT syb_quit()
            END
   --創(chuàng)建索引
   declare @index_sql varchar(1000)
   select  @index_sql='CREATE NONCLUSTERED INDEX'+@TableName+'_'+@NewIndex
         +' ON'+@TableName+'('+@IndexName+')'
   BEGIN   
    exec   (@index_sql)    
    print   @index_sql
   END
            --異常處理
 
            IF (@@error != 0)
            BEGIN
                PRINT 'Error CREATING Index出差語(yǔ)句:', @index_sql
                PRINT @@error
             Fetch next from tableName_Cursor into @TableName
    CONTINUE
            END
 
  Fetch next from tableName_Cursor into @TableName
 END
 
      
 Close tableName_Cursor
 DEALLOCATE tableName_Cursor
         --異常處理
            IF (@@error != 0)
            BEGIN
                PRINT 'Error CREATING Index出差語(yǔ)句:', @index_sql
                PRINT @@error
            END
GO
 
----------------------------發(fā)現(xiàn)問(wèn)題---------------------------------
INDEX是SYBASE數(shù)據(jù)庫(kù)的關(guān)鍵字,創(chuàng)建與查詢(xún)此字段時(shí)必須加[]才行,建議修改
--業(yè)務(wù)類(lèi)型對(duì)應(yīng)承載方式、性能指標(biāo)表
PRINT '<<<<< CREATING Table - "SERVICE2NORM" >>>>>'
IF OBJECT_ID('SERVICE2NORM') IS NOT NULL
 drop table SERVICE2NORM
GO
 
CREATE TABLE  SERVICE2NORM(
  ID INT  IDENTITY, --標(biāo)識(shí),自動(dòng)+1
  SERVICETYPE VARCHAR(3), --主業(yè)務(wù)類(lèi)型
  SUBSERVICETYPE VARCHAR(2), --子業(yè)務(wù)類(lèi)型
  EXPSERVICETYPE VARCHAR(3), --拓展業(yè)務(wù)類(lèi)型
  LOCALNET TINYINT, --主叫承載方式
  NORMID INT, --性能指標(biāo)
  TYPE TINYINT, --關(guān)注指標(biāo),0:關(guān)注(暫不使用)
  [INDEX] INT, --序號(hào).0:主性能;
 
PRIMARY KEY CLUSTERED ( ID )  ON 'default'
)
-----------------------------------------------------------------------
 
您正在看的sybase教程是:如何更改服務(wù)器的字符集為cp936。
 
(這里SYBASE的安裝路徑為c:sybase) 1.c:>cd sybasecharsetscp936 2.c:sybasecharsetscp936> charset -Usa -Psa_pass -Sserver_name binary.srt cp936 3.在SQL環(huán)境中1>select name,id from syscharsets 2>go 找到name為cp936對(duì)應(yīng)的id(假設(shè)為117) .1>sp_configure "default character set id,117 2>go 5.重啟server兩次
(注:第一次啟動(dòng)后,server會(huì)自動(dòng)宕掉,需要第二次重啟后才能使用)
 
 
如何修改Syabse服務(wù)器端的默認(rèn)字符集
 
 
以Windows操作系統(tǒng)Sybase12.5為例:
 
首先說(shuō)明察看服務(wù)端字符集和客戶(hù)端字符集的方法:
 
查看服務(wù)器端字符集:
 
在isql環(huán)境中執(zhí)行:
 
1>sp_helpsort
 
2> go
 
查看客戶(hù)端字符集:
 
在isql環(huán)境中執(zhí)行:
 
1> select @@client_csname
 
2> go
 
修改服務(wù)端字符集方法:
 
假設(shè)sybase安裝目錄為$sybase$
 
◆1.轉(zhuǎn)到$sybase$ASE-12_5in目錄
 
執(zhí)行命令:charset -Usa -P binary.srt iso_1
 
◆2.打開(kāi)isql,執(zhí)行下面的SQL查詢(xún)出iso_1對(duì)應(yīng)的id
 
select id , name from syscharsets where name = 'iso_1'
 
go
 
假設(shè)查詢(xún)結(jié)果為1
 
執(zhí)行下面語(yǔ)句設(shè)定默認(rèn)字符集
 
sp_configure 'default char',1 --可能有誤,以上面的查詢(xún)結(jié)果為準(zhǔn)
 
go
 
關(guān)閉ASE
 
shutdown
 
go
 
◆3.重新啟動(dòng)sybase服務(wù)兩次(第一次啟動(dòng)會(huì)失?。瑔?dòng)服務(wù)。
生活不易,碼農(nóng)辛苦
如果您覺(jué)得本網(wǎng)站對(duì)您的學(xué)習(xí)有所幫助,可以手機(jī)掃描二維碼進(jìn)行捐贈(zèng)
程序員人生
------分隔線(xiàn)----------------------------
分享到:
------分隔線(xiàn)----------------------------
關(guān)閉
程序員人生
主站蜘蛛池模板: 午夜理伦三级理论三级60 | wwwxxx欧美| 哪里可以看免费毛片 | 欧美系列第一页 | 狠狠去 | 国产一级做a爱片久久片 | 亚洲爽爽网| 一个色综合久久 | 国产欧美日韩在线观看一区二区三区 | 美女网站在线观看视频免费的 | 亚洲手机在线手机观看高清hd | baoyu116.永久免费视频入口 | 日本不卡视频在线视频观看 | 国产欧美日韩精品高清二区综合区 | 精品国产免费一区二区三区五区 | 欧美日在线 | 亚洲毛片免费在线观看 | 亚洲精品免费在线 | 欧美日韩国产在线观看 | 精品国产理论在线观看不卡 | 亚洲你xx我xx网站 | 一区二区免费 | 久久精品五月天 | 欧美一区二区三区国产精品 | 福利片一区| 综合亚洲欧美日韩一区二区 | 亚洲在线视频播放 | 亚洲精品美女久久久久 | 伊人不卡久久大香线蕉综合影院 | 91久久精品都在这里 | 国产成人无精品久久久 | 性生活国产 | 噜噜噜在线 | 羞羞视频日本动漫免费网站 | 99久久中文字幕伊人 | 亚洲欧美国产精品专区久久 | 特别毛片 | 香蕉久久ac一区二区三区 | 亚洲国产欧美在线人网站 | 亚洲国产成人久久 | 美国一级毛片片aa免 |