摘要: 这一个简单的文本框控件主要实现在了IPostBackDataHandler, IEditableTextControl, ItextControl三个接口。IPostBackDataHandler IEditableTextControl主要有事件event EventHandler TextChanged;有ItextControl主要有一个Text属性接口说明:IPostBackDataHan...
阅读全文
posted @ 2006-06-05 11:25 老狐狸 阅读(546) 评论(0)
编辑
Oralce和DB2都支持的语法:
UPDATE A
SET (A1, A2, A3) = (SELECT B1, B2, B3 FROM B WHERE A.ID = B.ID)
MS SQL Server不支持这样的语法,相对应的写法为:
UPDATE A
SET A1 = B1, A2 = B2, A3 = B3
FROM A LEFT JOIN B ON A.ID = B.ID
个人感觉MS SQL Server的Update语法功能更为强大。MS SQL SERVER的写法:
UPDATE A
SET A1 = B1, A2 = B2, A3 = B3
FROM A, B WHERE A.ID = B.ID
在Oracle和DB2中的写法就比较麻烦了,如下:
UPDATE A
SET (A1, A2, A3) = (SELECT B1, B2, B3 FROM B WHERE A.ID = B.ID)
WHERE ID IN (SELECT B.ID FROM B WHERE A.ID = B.ID)
posted @ 2007-09-03 09:26 老狐狸 阅读(47) 评论(0)
编辑
包头:
create or replace package ErrorLog is
-- Author : tuil
-- Created : 2006-9-18 13:45:53
-- Purpose :
-- Public type declarations
TYPE type_cur IS REF CURSOR;
procedure InsertLogError(ErrorId in varchar2,
Application in varchar2,
Host in varchar2,
Type in varchar2,
Source in varchar2,
Message in varchar2,
User in varchar2,
AllXml in clob default null,
StatusCode number,
TimeUtc in date);
procedure GetMasterErrorsXml(Application in varchar2,
PageIndex in number,
PageSize in number,
TotalCount out number,
v_cur out type_cur);
procedure GetDetailErrorXml(Application in varchar2,
ErrorId in varchar2,
v_cur out type_cur);
end ErrorLog;
包体:
create or replace package body ErrorLog is
procedure InsertLogError(ErrorId in varchar2,
Application in varchar2,
Host in varchar2,
Type in varchar2,
Source in varchar2,
Message in varchar2,
User in varchar2,
AllXml in clob default null,
StatusCode number,
TimeUtc in date) is
begin
insert into s_errorlog
(errorid,
application,
host,
type,
source,
message,
username,
statuscode,
timeutc,
SEQUENCE,
allxml)
values
(ErrorId,
Application,
Host,
Type,
Source,
message,
User,
StatusCode,
timeutc,
SEQ_S_ERRORLOG.Nextval,
AllXml);
end InsertLogError;
procedure GetMasterErrorsXml(Application in varchar2,
PageIndex in number,
PageSize in number,
TotalCount out number,
v_cur out type_cur) is
v_sql VARCHAR2(1000);
v_count number;
v_Plow number;
v_Phei number;
Begin
-----------------------------------------取分页总数
v_sql := 'select count(*) from s_errorlog t where t.Application=''' ||
Application || '''';
execute immediate v_sql
into v_count;
TotalCount := ceil(v_count / PageSize);
--------------------------------------------显示任意页内容
v_Plow := PageIndex * PageSize + 1;
v_Phei := v_Plow + PageSize - 1;
v_sql := 'SELECT ErrorId,
Application,
Host,
Type,
Source,
Message,
username,
StatusCode,
TimeUtc
FROM (SELECT ErrorId,
Application,
Host,
Type,
Source,
Message,
username,
StatusCode,
TimeUtc, row_number() over(ORDER BY Sequence DESC) rn
FROM s_errorlog a WHERE A.application = ''' || Application || ''')
WHERE rn BETWEEN ' || v_Plow || ' AND ' || v_Phei || '';
open v_cur for v_sql;
end;
procedure GetDetailErrorXml(Application in varchar2,
ErrorId in varchar2,
v_cur out type_cur) is
v_sql VARCHAR2(1000);
begin
v_sql := 'select allxml from s_errorlog t where t.application = ''' ||
Application || ''' and t.errorid =''' || ErrorId || '''';
open v_cur for v_sql;
end;
end ErrorLog;
表结构:
create table S_ERRORLOG
(
ERRORID VARCHAR2(50) not null,
APPLICATION VARCHAR2(60),
HOST VARCHAR2(50),
TYPE VARCHAR2(100),
SOURCE VARCHAR2(60),
MESSAGE VARCHAR2(500),
USERNAME VARCHAR2(50),
STATUSCODE NUMBER,
TIMEUTC DATE,
SEQUENCE NUMBER,
ALLXML CLOB
)
posted @ 2006-10-24 14:49 老狐狸 阅读(52) 评论(0)
编辑
create or replace function F_GETTABLELID(strTableName IN VARCHAR2 DEFAULT NULL) return VARCHAR2 is
Result VARCHAR2(9);
StoO_rowcnt INTEGER;
strIndex NUMBER(9, 0);
BEGIN
NULL;
BEGIN
StoO_rowcnt := 0;
UPDATE SS_TablesID T
SET t.CurrentIDindex = t.CurrentIDindex + 1
WHERE TableName = strTableName RETURNING CurrentIDindex INTO
strIndex;
StoO_rowcnt := SQL%ROWCOUNT;
EXCEPTION
WHEN NO_DATA_FOUND THEN
NULL;
WHEN OTHERS THEN
raise_application_error(SQLCODE, SQLERRM, true);
END;
IF StoO_rowcnt = 0 THEN
BEGIN
strIndex := 1;
BEGIN
INSERT INTO SS_TablesID
(TableName, CurrentIDindex)
VALUES
(strTableName, strIndex);
EXCEPTION
WHEN NO_DATA_FOUND THEN
NULL;
WHEN OTHERS THEN
raise_application_error(SQLCODE, SQLERRM, true);
END;
END;
END IF;
Result := lpad(CAST(strIndex as varchar2), 9, '0');
return(Result);
end F_GETTABLELID;

多表时:
CREATE OR REPLACE PROCEDURE F_GETMULTITABLELID(strTableName IN VARCHAR2 DEFAULT NULL,
num IN VARCHAR2 DEFAULT NULL,
strstartID IN OUT VARCHAR2,
strendID IN OUT VARCHAR2) AS
StoO_rowcnt INTEGER;
strIndex NUMBER(9, 0);
BEGIN
NULL;
BEGIN
StoO_rowcnt := 0;
UPDATE SS_TablesID T
SET t.CurrentIDindex = t.CurrentIDindex + 1
WHERE TableName = strTableName RETURNING CurrentIDindex INTO strIndex;
StoO_rowcnt := SQL%ROWCOUNT;
EXCEPTION
WHEN NO_DATA_FOUND THEN
NULL;
WHEN OTHERS THEN
raise_application_error(SQLCODE, SQLERRM, true);
END;
IF StoO_rowcnt = 0 THEN
BEGIN
strIndex := 1;
BEGIN
INSERT INTO SS_TablesID
(TableName, CurrentIDindex)
VALUES
(strTableName, strIndex);
EXCEPTION
WHEN NO_DATA_FOUND THEN
NULL;
WHEN OTHERS THEN
raise_application_error(SQLCODE, SQLERRM, true);
END;
END;
END IF;
strstartID := CAST(strIndex as varchar2);

/**//*取下面几个ID*/
BEGIN
UPDATE SS_TablesID
SET CurrentIDindex = CurrentIDindex +
(CAST(num AS NUMBER(9, 0)) - 1)
WHERE
TableName = F_GETMULTITABLELID.strTableName RETURNING
CurrentIDindex INTO strIndex;
EXCEPTION
WHEN NO_DATA_FOUND THEN
NULL;
WHEN OTHERS THEN
raise_application_error(SQLCODE, SQLERRM, true);
END;
F_GETMULTITABLELID.strendID := CAST(F_GETMULTITABLELID.strIndex AS
VARCHAR2);
end F_GETMULTITABLELID;

posted @ 2006-10-24 14:47 老狐狸 阅读(32) 评论(0)
编辑
请教各位高手。在字符串 str = "i have #a problem# ,#thank you# for help #me,you# are good";
我想通过正则表达式或者其他效率比较高的方法求的在# #之间的字符如:(a problem) ( thank you) (me,you)
谢谢各位大虾啦!
posted @ 2006-08-19 09:04 老狐狸 阅读(39) 评论(0)
编辑
select level, lpad(' ', 2 * level - 1, '--') || t.deptname, t.deptid
from lbi_department t
start with t.deptid = 1
connect by prior t.deptid = t.parentid
posted @ 2006-08-17 13:39 老狐狸 阅读(58) 评论(0)
编辑