Monday, April 17, 2006

Danny jumped to M$

Now M$ got three of best borland's chief architect .

Thursday, April 06, 2006

A interest query

we have a table items which miss some price for some weeks

































































WeekItemPrice
118
21null
31null
417
126
223
32null
132
23null
334
432
53null


we want to have a query to replace the missed price with last available price

SELECT i_item,
i_week,
i_price,
SUM(i_price) over(PARTITION BY new_price) new_price2
FROM (

SELECT i.item AS i_item,
i.week AS i_week,
i.price AS i_price,
SUM(i.price) over(ORDER BY i.item, i.week) new_price
FROM items i)
ORDER BY 1,
2

Monday, January 23, 2006

adopts dbms_rls to restrict the table access

oracle provides a powerful feature that allows developer to audit the table access with user_customized function, here is the sample

create or replace function GEORGEY_SECURITY_FUNCTION return boolean is
Result boolean;
begin
raise_application_error(-20101, 'illegal access');

return(Result);
end GEORGEY_SECURITY_FUNCTION;

BEGIN

dbms_rls.add_policy(object_schema => 'GEORGEY',
object_name => 'PEOPLE',
policy_name => 'GEORGEY_POLICY',
function_schema => 'GEORGEY',
policy_function => 'GEORGEY_SECURITY_FUNCTION',
statement_types => 'SELECT,UPDATE,INSERT,DELETE',
update_check => TRUE,
enable => TRUE,
static_policy => FALSE);

END;

Tuesday, October 11, 2005

Monday, October 10, 2005

Saturday, September 03, 2005

clone object in dotnet

private static void TestClone()
{
Person p1 = new Person();
p1.Age = 26;
p1.UserName = "yyanghhong";

Person p2 = (Person)CloneObjectEx(p1);
p2.UserName = "unruledboy";

Console.WriteLine(p1.UserName);
Console.WriteLine(p2.UserName);
}

public static Person CloneObject(Person ObjectInstance)
{
BinaryFormatter bFormatter = new BinaryFormatter();
MemoryStream stream = new MemoryStream();
bFormatter.Serialize(stream, ObjectInstance);
stream.Seek(0, SeekOrigin.Begin);
Person newObject = (Person)bFormatter.Deserialize(stream);
return newObject;
}

public static object CloneObjectEx(object ObjectInstance)
{
BinaryFormatter bFormatter = new BinaryFormatter();
MemoryStream stream = new MemoryStream();
bFormatter.Serialize(stream, ObjectInstance);
stream.Seek(0, SeekOrigin.Begin);
return bFormatter.Deserialize(stream);
}

[Serializable]
public class Person
{
private int age;
private string userName;

public Person()
{
}

public int Age
{
get{return age;}
set{age = value;}
}
public string UserName
{
get{return userName;}
set{userName = value;}
}
}