2013年9月12日 星期四

Oracle Database 查詢物件授權狀況

select * from USER_tab_PRIVS ;

Grantee: 授權對象
Owner: 物件擁有者
Privilege: 授予權限

2013年8月18日 星期日

VBA - 日期資料顯示轉換

Sub Change_Date_Format()
Dim I, J As Integer
Dim s1 As String

Application.ScreenUpdating = False
For I = 2 To 10

    Sheets("Sheet 1").Select
    s1 = Range("V" & I).Value
    ActiveSheet.Range("V" & I).Select

    If IsNull(Trim(s1)) Or s1 = "" Then
    Else
       ActiveCell.Value = Format(CDate(s1), "yyyy/mm/dd hh:mm:ss")
     
    End If
Next

Application.ScreenUpdating = True
MsgBox "Done"


End Sub


2013年3月18日 星期一

SQL Server Table column 查找

1. 單純的一個DB 查找 Script : 

SELECT t.name AS table_name,SCHEMA_NAME(schema_idAS schema_name,c.name AS column_nameFROM sys.tables AS tINNER JOIN sys.columns c ON t.OBJECT_ID c.OBJECT_IDWHERE c.name LIKE '%XXX%'ORDER BY schema_nametable_name;

2. 整個主機 查找 包含 XXX 欄位的 Table Script : 

declare @tmp_record table(db_name varchar(100),
schema_name varchar(100),table_name varchar(100),
column_name varchar(100),max_length varchar(100))
declare @sqlstr nvarchar(4000)
declare @keyword varchar(20)
declare @db_name sysname
set @keyword = 'acc_no'
declare cur_db cursor for
select name from sys.databases where state = 0
open cur_db
fetch next from cur_db into @db_name
while @@fetch_status = 0
begin
set @sqlstr = ''
set @sqlstr = @sqlstr + '
SELECT '''+@db_name+''',c.name as schema_name,b.name as table_name,a.name as column_name,max_length FROM (
select * from ['+@db_name+'].sys.all_objects where object_id IN (
select object_id from ['+@db_name+'].sys.all_columns where name like ''%'+@keyword+'%''
)
) b
RIGHT JOIN ['+@db_name+'].sys.all_columns a ON a.object_id = b.object_id
LEFT JOIN ['+@db_name+'].sys.schemas c ON c.schema_id = b.schema_id
WHERE a.name like ''%'+@keyword+'%''
and b.type_desc = ''USER_TABLE'' '
begin try
set nocount on
insert into @tmp_record
exec sp_executesql @sqlstr
end try
begin catch
print error_message()
print @sqlstr
end catch
fetch next from cur_db into @db_name
end
close cur_db
deallocate cur_db

select * from @tmp_record

2011年11月3日 星期四

Oracle DB Error Message Trace

RAISE_APPLICATION_ERROR(-20002,vsErrM||chr(10)||DBMS_UTILITY.FORMAT_ERROR_BACKTRACE);

2011年4月11日 星期一

Excel Cell Format 變更(千元位表達)


在Excle 上面要做到資料內容不動, 但依照需求顯示成為千元、整數元、小數兩位之格式

首先要先了解Excel 的Cell Format 規則請參閱 Excel

1. 基本數字格式代碼

2.建立或刪除自訂數字格式

ex: 要表達成為下列的內容




格式>>儲存格>>數值>>自訂
千分位表達- format 設定: #,###,###.00
整數位表達- format 設定: #,###,###
千元位表達- format 設定: #,###,

其他的需求應該可以依照數字格式設定來解決.

2010年12月12日 星期日

查詢Oracle DB Locked Object

查詢DB Object 被 lock的語法
select lo.session_id, vs.SERIAL# , do.OBJECT_NAME, lo.*from v$locked_object lo ,dba_objects do , v$session vs where lo.object_id = do.object_id and lo.SESSION_ID = vs.SID ;

2010年12月1日 星期三

PL SQL Develop - 比對不同資料庫同一個DB 物件的差異






要比對同一個DB物件, 在不同資料庫之差異. 可以利用 PL-Sql Develop 的Ccompare 功能




1. 先登入 要比對物件的其中一台DB
2. PL-Sql Develop - Tools -> Compare User Objects
2.1 選擇要比對的物件(按Ctrl + Click) 可以多選
2.2 輸入要比對的DB 登入相關資訊
2.3 執行Compare









3. 比對完成後, 可以在Differences中看到 一些資訊
3.1 上面的表列會列出所選的物件中. 哪些物件是與Target 有差益的物件
3.2 下方的Script 是有差異的物件, 以來源DB 為基準做為要更新Target DB的語法. (ex: Table Structure 有差異. 會產生一些modify 的script , Procedure or Function 則是Replace的語法)
3.3 右邊的Button 有幾個比較特別的部分
3.3.1 針對差異語法複製至 Clipboard or 另存成檔案 (針對 Table Structure 差異較有用處)
3.3.2 顯示兩個物件差異的地方 (針對 Procedure or Function 特別有用), 會另外開一個Window 並用不同顏色標示兩邊差異的內容

























2010年3月21日 星期日

Oracle - 如何變更Sequence nextval

1 ALTER SEQUENCE sequence_name INCREMENT BY number;
ex: ALTER SEQUENCE myseq INCREMENT BY 1; ---> add 1 to last number;
ex: ALTER SEQUENCE myseq INCREMENT BY -1; ----> subtrace 1 from last number;
2 select myseq.currval from dual; ---> sequence current number
select myseq.nextval from dual; ---> sequence next number

3 修改sequence 的cache為0.
ex: ALTER SEQUENCE sequence_name NOCACHE

2010年3月17日 星期三