window.onerror= OnErrorTrace;
function OnErrorTrace(msg,url,line){
try{
var rtn ="";
rtn+="[URL]\t" + url + "\n";
rtn+="[LINE]\t" + line+ "\n";
rtn+="[MSG]\t" + msg + "\n";
rtn+="[TRACE]";
var fnc=onerror.caller;
while(fnc!=null){
rtn+="\t"+String(fnc).substr(0,String(fnc).indexOf("{",0))+"\n";
fnc=fnc.caller;
};
alert(rtn);
}catch(e){
alert(rtn+"\n"+e.message);
};
};
↓ASP.NET の階層的なデータ バインディング/// /// リレーションシップに基いて、複数階層データバインドを行う関数。 /// Aspで2階層目以降のDataSourceを↓の様に設定する。 /// DataSource='<%# GetChildRelation(Container.DataItem,"リレーションシップ名") %>' /// ///親要素 ///リレーションシップ名 ///子要素データビュー protected DataView GetChildRelation(object dataItem, string relation) { DataRowView drv = dataItem as DataRowView; if (drv != null) { return drv.CreateChildView(relation); } else { return null; } }
http://www.microsoft.com/japan/msdn/net/aspnet/ASPN-HierDataBinding.asp
JavaScriptに定義されたページを、順番に表示するためだけのHTA (WebApplicationのキャッシュ読み込み用に作成。。)
1.NullとEmptyの違い
ORACLE : EmptyとNullを曖昧に判断する。
SQLSERVER : EmptyとNullを明確に判断する。
2.Nullのソート順
ORACLE : 昇順で、Null値は最後に配置される。
SQLSERVER : 昇順で、Null値は先頭に配置される。
3.Null置き換え関数
ORACLE : Nvl(Field,Value)
SQLSERVER : IsNull(Field,Value)
4.Trim
ORACLE : Trim存在する。
SQLSERVER : RTrim/LTrimならある。
5.左文字詰め(’0′埋めだと)
ORACLE : LPAD([文字列],38,’0′)
SQLSERVER : REPLICATE(’0′,38-DATALENGTH([文字列]))+[文字列]
6.ロック(占有ロックとの事。。)
Oracle : FOR UPDATE
SQLSERVER : (UPDLOCK)
7.文字型→日付型変換
ORACLE : TO_DATE(’2000/01/01 10:20:30′,’yyyy/mm/dd hh24:mi:ss’)
SQLSERVER : CONVERT ( datetime,’2000/01/01 10:20:30′,120)
8.日付型→文字型変換
ORACLE : TO_CHAR(更新日時,’YYYYMMDD’)
SQLSERVER : CONVERT(varchar,更新日時,112)
9.システム日付
ORACLE : SYSDATE(current_timestampも使えたが、グリニッジっぽい値になってしもうた。なぜ?)
SQLSERVER : current_timestamp
10.文字列切り出し
ORACLE : SELECT SUBSTR([文字列],2,2) FROM DUAL
SQLSERVER : SELECT SUBSTRING([文字列],2,2)
11.数値→文字列変換
ORACLE : TO_CHAR([文字列])
SQLSERVER : 数値から文字型であれば、暗黙の変換で大丈夫。
(明示的に書くならば、CAST or CONVERT使用)
12.文字列連結
ORACLE : ||
SQLSERVER : +
13.JOIN時のテーブル別名
ORACLE : 無くても動いた。。。
SQLSERVER : テーブル別名必須っぽい?(UNIONにも必要とは。。)
14.EMPTY→数値型の更新について。
ORACLE : EMTPY→数値型へ更新が可能。Nullの扱いとなる。
SQLSERVER : EMPTY→数値型へ更新が不可。数値変換エラーとなる。
15.余分な0が付加される。(ドライバのせい?)
ORACLE : NUMBER(15,5)型から数値1を、SELECTすると結果は、”1″
SQLSERVER : NUMERIC(15,5)型から数値1を、SELECTすると結果は、”1.00000″
16.それぞれの予約語に注意。。
DataBaseでの文字列型、EmptyとNullの扱いについて。
・Oracleは、EmptyとNullを曖昧に判断する。
・SQLServerは、EmptyとNullを明確に判断する。
これを、意識しないとハマる事がある。。
つまり、
Oracleでは↓の様に書けば曖昧に判断してくれるが、
SELECT * FROM table WHERE field=”
SQLServerだと、↓の様に書かないと違う結果になる事がある。
SELECT * FROM table WHERE field=” OR field is null
どっちが良いとも思わないが、昔ハマった。。
最近だと、だったらSQLServer側で、
fieldの初期値をEmptyにすれば
どちらも↓の書き方で良いではないかと思ったのだが。。
SELECT * FROM table WHERE field=”
外部キーによる参照整合性制約を使っているため、
null値を設定出来ないと困る事が発覚。。
↓の書き方しかないのかなぁと、思うこの頃。
SELECT * FROM table WHERE field=” OR field is null
