Web开发电子期刊 2010年第3期(第43期)
作者:admin 日期:2010-04-24
总结Kill Session 的几种方法
作者:admin 日期:2010-04-19
1.在PL/SQL Developer 中 菜单"工具"--->Sessions
选择要Kill的Session,鼠标右键进行操作
2.在Toad 启动Toad,切换到Session Browser
进入以下界面,查看所有对应User所开启的Session
鼠标右键,或点击左上角的按钮对Session进行操作
3.直接用SQL语句 查找所有Session
查找及干掉锁死的代码
Select /*+RULE*/
s.machine,
s.osuser "O/S-User",
s.username "Ora-User",
s.sid "Session-ID",
s.serial# "Serial",
s.process "Process-ID",
s.status "Status",
l.name "Obj Locked",
l.mode_held "Lock Mode",
s.logon_time
FROM v$session s, dba_dml_locks l, v$process p
Where l.session_id = s.sid
AND p.addr = s.paddr --and l.name='RCV_TRANSACTIONS_INTERFACE'
order by s.logon_time
alter system kill session 'sid,serial#';
alter system kill session 'Session_ID,serial';
4.在Unix and Linux 操作系统中使用命令Kill Session
$ps -ef|grep ora_|grep -v grep
eg:$kill -9 1451
5.在Windows操作系统中使用命令Kill Session
SQL> select a.username, b.spid from v$session a, v$process b where a.paddr = b.addr and a.username ='SCOTT';
USERNAME SPID.
-------- ----
SCOTT 1456
C:\> orakill instance_name spid
C:\> orakill orcl 1456
6.在Windows中使用TASKKILL 命令
C:\>tasklist
Image Name PID Session Name Session# Mem Usage
=============== ======== ======== ============
System Idle Process 0 Console 0 16 K
oracle.exe 1456 Console 0 282,100 K
smss.exe 636 Console 0 420 K
C:\>taskkill /pid 1456 /T
7.使用NET STOP 及NET START命令
C:\>NET STOP "OracleServiceORCL"
C:\>NET START "OracleServiceORCL"
[/code][/code]
选择要Kill的Session,鼠标右键进行操作
2.在Toad 启动Toad,切换到Session Browser
进入以下界面,查看所有对应User所开启的Session
鼠标右键,或点击左上角的按钮对Session进行操作
3.直接用SQL语句 查找所有Session
复制内容到剪贴板 程序代码
Select b.sid,
b.serial#,
a.spid,
b.program,
b.osuser,
b.machine,
b.type,
b.event,
b.action,
b.p1text,
b.p2text,
b.p3text,
b.state,
c.sql_text,
b.logon_time
FROM v$process a, v$session b, v$sqltext c
Where a.addr = b.paddr
AND b.sql_hash_value = c.hash_value
AND b.STATUS = 'ACTIVE'
orDER BY a.spid, c.piece
[code]
杀进程
[code]
Alter system KILL session 'sid, serial#'
b.serial#,
a.spid,
b.program,
b.osuser,
b.machine,
b.type,
b.event,
b.action,
b.p1text,
b.p2text,
b.p3text,
b.state,
c.sql_text,
b.logon_time
FROM v$process a, v$session b, v$sqltext c
Where a.addr = b.paddr
AND b.sql_hash_value = c.hash_value
AND b.STATUS = 'ACTIVE'
orDER BY a.spid, c.piece
[code]
杀进程
[code]
Alter system KILL session 'sid, serial#'
查找及干掉锁死的代码
复制内容到剪贴板 程序代码
Select /*+RULE*/
s.machine,
s.osuser "O/S-User",
s.username "Ora-User",
s.sid "Session-ID",
s.serial# "Serial",
s.process "Process-ID",
s.status "Status",
l.name "Obj Locked",
l.mode_held "Lock Mode",
s.logon_time
FROM v$session s, dba_dml_locks l, v$process p
Where l.session_id = s.sid
AND p.addr = s.paddr --and l.name='RCV_TRANSACTIONS_INTERFACE'
order by s.logon_time
复制内容到剪贴板 程序代码
alter system kill session 'sid,serial#';
alter system kill session 'Session_ID,serial';
4.在Unix and Linux 操作系统中使用命令Kill Session
$ps -ef|grep ora_|grep -v grep
eg:$kill -9 1451
5.在Windows操作系统中使用命令Kill Session
SQL> select a.username, b.spid from v$session a, v$process b where a.paddr = b.addr and a.username ='SCOTT';
USERNAME SPID.
-------- ----
SCOTT 1456
C:\> orakill instance_name spid
C:\> orakill orcl 1456
6.在Windows中使用TASKKILL 命令
C:\>tasklist
Image Name PID Session Name Session# Mem Usage
=============== ======== ======== ============
System Idle Process 0 Console 0 16 K
oracle.exe 1456 Console 0 282,100 K
smss.exe 636 Console 0 420 K
C:\>taskkill /pid 1456 /T
7.使用NET STOP 及NET START命令
C:\>NET STOP "OracleServiceORCL"
C:\>NET START "OracleServiceORCL"
[/code][/code]
Web开发电子期刊 2010年第2期(第42期)
作者:admin 日期:2010-03-19
终于补上了第二期,本月非一般地忙.但我还是要把这份期刊做出来.
感谢文章的原创作者及出处网站.
本期目录:
Net
ASP.NET备份还原数据库
在C#中调用API获取网络信息和流量
.NET 异常处理
在.net 当中如何XML序列化一个Collection
实现Winform间的数据交互的三种方法
ASP.NET程序员应用程序域须知
ASP.NET 输出缓存的移除
Asp.net 中利用ajax获取动态创建表中文本框的值
数据库缓存依赖
Asp.NET生成静态页面并分页
ASP.NET Profile
如何在ASP.NET程序中显示程序集版本号
Java
Java中Queue和BlockingQueue的区别
Java内存泄漏分析与解决方案
Java异常处理及异常机制介绍
Java构造函数的执行
Java访问权限修饰符用法总结
为Java Web应用程序增加入侵检测功能
Java设置代理IP访问网站
使用Java编写Oracle存储过程
Java中Vector、ArrayList、List使用深入剖析
Java类型转换
Java Swing文本框输入中文弹出输入窗口的解决
Java学习之路:不走弯路,就是捷径
SQL Server
数据库系统的安全机制
OUTPUT 语句使用
SQL查询语句使用
SQL Server和Oracle数据库索引介绍
CEIL和FLOOR函数查询(Oracle,MSSQL)
SQL优化34条
利用SQL的charindex实现字符串数组和Split函数
SQL语句中的通配符实例
存储优化 -- 删除重复记录只保留单条
清除SQL中注入恶意病毒的编程
oracle
如何快速的杀掉Oracle的Session
oracle分页语句
database link的设置和使用方法
oracle连接数过多释放机制
修改Oracle数据库的连接数
CEIL和FLOOR函数查询(Oracle,MSSQL)
orACLE查看执行计划
oracle中的service_name,instance_name,db_name,oracle_sid,sid_
orACLE创建密码文件
orACLE NOARCHIVELOG模式冷备份笔记
Cookie创建以及清除Cookie数组
Javascript
javascript 实现滚动效果
真正的iframe高度自适应(兼容IE,FF,Opera)
26个Jquery使用小技巧(jQuery tips, tricks & solutions)
高效 Javascript
利用.LESS来提高CSS
10条改进你的CSS代码的方法
页面跳转代码整理
置换元素在IE浏览器中的疑难杂症
雅黑字体对IE显示网页布局的影响
生活.成长
11种脸色反映出你的健康
适合咨询顾问的养生之道
食欲不振九大原因
产生疲劳感十大原因
愿你的人生也拥有这样的情怀
80后需要牢记的十大人生底线
成功者是乐于工作的人
相貌与成功的关系
幸福,是每一个微小的生活愿望达成
效率极低人群之七大习惯
Web开发电子期刊 2010年第1期(第41期)
作者:admin 日期:2010-03-09
Web开发电子期刊 2009年第12期(第40期)
作者:admin 日期:2010-01-19
Web开发电子期刊 2009年第11期(第39期)
作者:admin 日期:2009-12-08
求同一商品不同代理在相同条件下的最新价
作者:admin 日期:2009-11-17
PLS-00306:错误解决思路
作者:admin 日期:2009-10-25
如果你是像我一样初次使用Net+Oracle的结合,我想你会跟我一样,有很大的概率碰到这个问题
=======================================================
PLS-00306: wrong number or types of arguments in call to '存储过程名'
orA-06550: line 1, column 7:
PL/SQL: Statement ignored
=======================================================
或者说像这样子的:
pls-00306 调用 时参数个数或类型错误
如果没有经验的话,就会一头雾水到处乱撞。我也是被这个搞得很痛苦了,我把自己解决这问题思路与大家分享一下,希望能对您有所帮助.
Step1:确认你的Oracle包中的存储过程中的参数的总数,是否与您在Net中调用存储过程中的参数保持一致的数目。还有就是要注意function传参与procedure传参的参数的不同写法.
function传参的时候需要加入:号
例如:
Step2:确认你在Oracle包中的存储过程的参数的数据类型,是否能与您在Net中调用存储过程中的参数的数据类型匹配
Step3:确认你在Net应用程序中所使用的连接存储过程和获取返回值的方法是否正确..
这主要是在使用function的时候与使用procedure的时候,当需要获取存储过程或包中的返回的值的时候需要注意的不同方法.一般我们在获取function的返回值的时候使用的是
new oracleParameter(":P_PRICEFORMID",OracleType.VarChar,20),
new oracleParameter(":P_VENDOR_CODE",OracleType.VarChar,20),
new oracleParameter(":P_VENDOR_SITE_CODE",OracleType.VarChar,20),
new oracleParameter(":P_VAT_CODE",OracleType.VarChar,20),
new oracleParameter(":P_ITEM_CODE",OracleType.VarChar,20),:
而使用procedure的时候是不用:号的
Step4:确认你所传入Oracle中的各参数的值是否会出现null值.
在传入参数过多的时候,这里面的问题很难发现.只能通过一个一个值传入去测试.所以最好的解决办法是将所要传入的参数都给定一个默认值,同时要注意数据类型的匹配.尽量避免null值和空值的传入. 有些情况下使用VS的断点去追踪,明明看见有值,可以在传入oracle表内就会没值,这种情况要特别注意.我就是碰到这样的情况了.
Step5:确认你的服务器端Oracle版本是否与你在客户端Oracle的版本保持一致.
有些时候因为在不同的客户端版本下所编译的包的结果会有所差异,比如我在8i的情况下编译通过,有可能在9i的版本就会通不过,这可能与pl/sql的语法规定有关.所以尽量保持客户端与服务器的oracle版本一致.最好的判断办法就是看看 sql plus的版本是否是一致.
我拿自己在实际过程中碰到的一个例子来说明吧.
见:
http://topic.csdn.net/u/20091019/00/8f05ee3b-e41c-4aff-bafd-a68d47f8eebf.html
我报的错是这样的:
报错如下:
orA-06550: line 1, column 7:
PLS-00306: wrong number or types of arguments in call to 'InsertTOEBSCODE'
orA-06550: line 1, column 7:
PL/SQL: Statement ignored
我的问题是:在本机上测试正常,放至服务器上就出现问题了.最终找到的根缘在于我有个字段传了个null值或是没有传入值进入,导至报错.我是一个一个字段去把这原因找出来的.虽说有点笨拙,但还是把问题给找出来了.
我的操作类中的方法:
这里要注意几点的是:
1.要获取包中存储过程返回的值,需要这样写
parameters[13].Direction=ParameterDirection.Output;
2.注意C#与Oracle的时间转换 一般最好的解决方法是在C#中设置成string类型,然后在Oracle中通过to-date()函数把它转化成时间格式.一开始我也是在这碰了个丁子,后来通过在c#传入所要的时间格式,在oracle中转换成要用的时间格式即可.
parameters[5].Value = effectiveDate.ToString("yyyy-MM-dd hh:mm:ss");
要规定格式是因为考虑在服务器端是英文操作系统,所得到的默认时间格式与客户端所提交的不同.所以需要根据服务器端的系统环境进行时间格式的设置.
/// <summary>
/// 插入已OK的价格至EBS中
/// </summary>
/// <param name="priceForm"> </param>
/// <returns> </returns>
public bool InsertToEBS(Entity.CAS.PriceFormInfo priceForm)
{
oracleParameter[] parameters =
{
new oracleParameter("P_PRICEFORMID",OracleType.VarChar,20),
new oracleParameter("P_VENDOR_CODE",OracleType.VarChar,20),
new oracleParameter("P_VENDOR_SITE_CODE",OracleType.VarChar,20),
new oracleParameter("P_VAT_CODE",OracleType.VarChar,20),
new oracleParameter("P_ITEM_CODE",OracleType.VarChar,20),
new oracleParameter("P_EFFECTIVE_DATE",OracleType.VarChar,20),
new oracleParameter("P_PURCHASER",OracleType.VarChar,20),
new oracleParameter("P_CHECKER",OracleType.VarChar,20),
new oracleParameter("P_AUDITOR",OracleType.VarChar,20),
new oracleParameter("P_POCT",OracleType.VarChar,10),
new oracleParameter("P_UNIT_PRICE",OracleType.VarChar,20),
new oracleParameter("P_PASSED_DATE",OracleType.VarChar,20),
new oracleParameter("P_TERMS_DESC",OracleType.VarChar,100),
new oracleParameter("v_retval",OracleType.Number)
};
parameters[0].Value = priceForm.FormID.ToString();
parameters[1].Value = priceForm.SupplierCode;
parameters[2].Value = priceForm.Vendor_site_code;
parameters[3].Value = priceForm.Tax.ToString();
parameters[4].Value = priceForm.MaterialCode.Trim();
DateTime effectiveDate= Convert.ToDateTime(priceForm.EffectiveDate.ToString());
DateTime passedDate= Convert.ToDateTime(priceForm.PassedDate.ToString());
if (priceForm.EffectiveDate > priceForm.PassedDate)
{
parameters[5].Value = effectiveDate.ToString("yyyy-MM-dd hh:mm:ss");
}
else
{
parameters[5].Value = passedDate.ToString("yyyy-MM-dd hh:mm:ss");
}
parameters[6].Value = priceForm.Purchaser;
parameters[7].Value = priceForm.Checker;
parameters[8].Value = priceForm.Auditor;
parameters[9].Value = priceForm.POCT;
parameters[10].Value = priceForm.Price.ToString();
parameters[11].Value = passedDate.ToString("yyyy-MM-dd hh:mm:ss");
parameters[12].Value = priceForm.Payment.ToString().Trim();
parameters[13].Direction=ParameterDirection.Output;
try
{
Convert.ToInt32(OracleHelper.ExecuteNonQuery(OracleHelper.ConnectionStringProfile, CommandType.StoredProcedure, "PO_CAS_PRICE_PKG.InsertToEBSCode", parameters));
int retval = Convert.ToInt32(parameters[13].Value);
if (retval == 1)
{
return true;
}
else
return false;
}
catch (Exception ee)
{
throw ee;
}
finally
{
}
包中的存储过程
中的存储过程:
create or replace package PO_CAS_PRICE_PKG is
-- Author : EASTJAZZ
-- Created : 2009-10-16 0:29:13
-- Purpose :
procedure InsertToEBSCode(P_PRICEFORMID IN VARCHAR2,
P_VENDOR_CODE IN VARCHAR2,
P_VENDOR_SITE_CODE IN VARCHAR2,
P_VAT_CODE IN VARCHAR2,
P_ITEM_CODE IN VARCHAR2,
P_EFFECTIVE_DATE in VARCHAR2,
P_PURCHASER IN VARCHAR2,
P_CHECKER IN VARCHAR2,
P_AUDITOR IN VARCHAR2,
P_POCT IN VARCHAR2,
P_UNIT_PRICE IN VARCHAR2,
P_PASSED_DATE IN VARCHAR2,
P_TERMS_DESC IN VARCHAR2,
v_retval out number);
end PO_CAS_PRICE_PKG;
调用函数取得返回值的Example
public string GetItemDescription(string item_code, int org_id)
{
oracleParameter[] Parms =
{
new oracleParameter("p_item_code",OracleType.VarChar,20),
new oracleParameter("p_org_id",OracleType.Number,4),
new oracleParameter("v_item_desc",OracleType.VarChar,150)
};
Parms[0].Value = item_code;
Parms[1].Value = org_id;
Parms[2].Direction = ParameterDirection.ReturnValue;
IList<Entity.CAS.EBSVendorInfo> vendorItemList = new List<Entity.CAS.EBSVendorInfo>();
oracleHelper.ExecuteNonQuery(OracleHelper.ConnectionStringProfile, CommandType.StoredProcedure, "PO_VENDORS_PKG.GetItemDescription", Parms);
return Parms[2].Value.ToString().Trim();
}
Function:
function GetItemDescription(p_item_code in varchar2, p_org_id number)
return varchar2 is
v_item_desc varchar2(150);
begin
select msib.DESCRIPTION item_desc
into v_item_desc
from MTL_SYSTEM_ITEMS_B msib
where msib.SEGMENT1 = trim(p_item_code)
and msib.ORGANIZATION_ID = p_org_id;
return v_item_desc;
end GetItemDescription;
初学过程中的一点小经验,与大家分享,欢迎指正.
=======================================================
PLS-00306: wrong number or types of arguments in call to '存储过程名'
orA-06550: line 1, column 7:
PL/SQL: Statement ignored
=======================================================
或者说像这样子的:
pls-00306 调用 时参数个数或类型错误
如果没有经验的话,就会一头雾水到处乱撞。我也是被这个搞得很痛苦了,我把自己解决这问题思路与大家分享一下,希望能对您有所帮助.
Step1:确认你的Oracle包中的存储过程中的参数的总数,是否与您在Net中调用存储过程中的参数保持一致的数目。还有就是要注意function传参与procedure传参的参数的不同写法.
function传参的时候需要加入:号
例如:
Step2:确认你在Oracle包中的存储过程的参数的数据类型,是否能与您在Net中调用存储过程中的参数的数据类型匹配
Step3:确认你在Net应用程序中所使用的连接存储过程和获取返回值的方法是否正确..
这主要是在使用function的时候与使用procedure的时候,当需要获取存储过程或包中的返回的值的时候需要注意的不同方法.一般我们在获取function的返回值的时候使用的是
new oracleParameter(":P_PRICEFORMID",OracleType.VarChar,20),
new oracleParameter(":P_VENDOR_CODE",OracleType.VarChar,20),
new oracleParameter(":P_VENDOR_SITE_CODE",OracleType.VarChar,20),
new oracleParameter(":P_VAT_CODE",OracleType.VarChar,20),
new oracleParameter(":P_ITEM_CODE",OracleType.VarChar,20),:
而使用procedure的时候是不用:号的
Step4:确认你所传入Oracle中的各参数的值是否会出现null值.
在传入参数过多的时候,这里面的问题很难发现.只能通过一个一个值传入去测试.所以最好的解决办法是将所要传入的参数都给定一个默认值,同时要注意数据类型的匹配.尽量避免null值和空值的传入. 有些情况下使用VS的断点去追踪,明明看见有值,可以在传入oracle表内就会没值,这种情况要特别注意.我就是碰到这样的情况了.
Step5:确认你的服务器端Oracle版本是否与你在客户端Oracle的版本保持一致.
有些时候因为在不同的客户端版本下所编译的包的结果会有所差异,比如我在8i的情况下编译通过,有可能在9i的版本就会通不过,这可能与pl/sql的语法规定有关.所以尽量保持客户端与服务器的oracle版本一致.最好的判断办法就是看看 sql plus的版本是否是一致.
我拿自己在实际过程中碰到的一个例子来说明吧.
见:
http://topic.csdn.net/u/20091019/00/8f05ee3b-e41c-4aff-bafd-a68d47f8eebf.html
我报的错是这样的:
报错如下:
orA-06550: line 1, column 7:
PLS-00306: wrong number or types of arguments in call to 'InsertTOEBSCODE'
orA-06550: line 1, column 7:
PL/SQL: Statement ignored
我的问题是:在本机上测试正常,放至服务器上就出现问题了.最终找到的根缘在于我有个字段传了个null值或是没有传入值进入,导至报错.我是一个一个字段去把这原因找出来的.虽说有点笨拙,但还是把问题给找出来了.
我的操作类中的方法:
这里要注意几点的是:
1.要获取包中存储过程返回的值,需要这样写
parameters[13].Direction=ParameterDirection.Output;
2.注意C#与Oracle的时间转换 一般最好的解决方法是在C#中设置成string类型,然后在Oracle中通过to-date()函数把它转化成时间格式.一开始我也是在这碰了个丁子,后来通过在c#传入所要的时间格式,在oracle中转换成要用的时间格式即可.
parameters[5].Value = effectiveDate.ToString("yyyy-MM-dd hh:mm:ss");
要规定格式是因为考虑在服务器端是英文操作系统,所得到的默认时间格式与客户端所提交的不同.所以需要根据服务器端的系统环境进行时间格式的设置.
/// <summary>
/// 插入已OK的价格至EBS中
/// </summary>
/// <param name="priceForm"> </param>
/// <returns> </returns>
public bool InsertToEBS(Entity.CAS.PriceFormInfo priceForm)
{
oracleParameter[] parameters =
{
new oracleParameter("P_PRICEFORMID",OracleType.VarChar,20),
new oracleParameter("P_VENDOR_CODE",OracleType.VarChar,20),
new oracleParameter("P_VENDOR_SITE_CODE",OracleType.VarChar,20),
new oracleParameter("P_VAT_CODE",OracleType.VarChar,20),
new oracleParameter("P_ITEM_CODE",OracleType.VarChar,20),
new oracleParameter("P_EFFECTIVE_DATE",OracleType.VarChar,20),
new oracleParameter("P_PURCHASER",OracleType.VarChar,20),
new oracleParameter("P_CHECKER",OracleType.VarChar,20),
new oracleParameter("P_AUDITOR",OracleType.VarChar,20),
new oracleParameter("P_POCT",OracleType.VarChar,10),
new oracleParameter("P_UNIT_PRICE",OracleType.VarChar,20),
new oracleParameter("P_PASSED_DATE",OracleType.VarChar,20),
new oracleParameter("P_TERMS_DESC",OracleType.VarChar,100),
new oracleParameter("v_retval",OracleType.Number)
};
parameters[0].Value = priceForm.FormID.ToString();
parameters[1].Value = priceForm.SupplierCode;
parameters[2].Value = priceForm.Vendor_site_code;
parameters[3].Value = priceForm.Tax.ToString();
parameters[4].Value = priceForm.MaterialCode.Trim();
DateTime effectiveDate= Convert.ToDateTime(priceForm.EffectiveDate.ToString());
DateTime passedDate= Convert.ToDateTime(priceForm.PassedDate.ToString());
if (priceForm.EffectiveDate > priceForm.PassedDate)
{
parameters[5].Value = effectiveDate.ToString("yyyy-MM-dd hh:mm:ss");
}
else
{
parameters[5].Value = passedDate.ToString("yyyy-MM-dd hh:mm:ss");
}
parameters[6].Value = priceForm.Purchaser;
parameters[7].Value = priceForm.Checker;
parameters[8].Value = priceForm.Auditor;
parameters[9].Value = priceForm.POCT;
parameters[10].Value = priceForm.Price.ToString();
parameters[11].Value = passedDate.ToString("yyyy-MM-dd hh:mm:ss");
parameters[12].Value = priceForm.Payment.ToString().Trim();
parameters[13].Direction=ParameterDirection.Output;
try
{
Convert.ToInt32(OracleHelper.ExecuteNonQuery(OracleHelper.ConnectionStringProfile, CommandType.StoredProcedure, "PO_CAS_PRICE_PKG.InsertToEBSCode", parameters));
int retval = Convert.ToInt32(parameters[13].Value);
if (retval == 1)
{
return true;
}
else
return false;
}
catch (Exception ee)
{
throw ee;
}
finally
{
}
包中的存储过程
中的存储过程:
create or replace package PO_CAS_PRICE_PKG is
-- Author : EASTJAZZ
-- Created : 2009-10-16 0:29:13
-- Purpose :
procedure InsertToEBSCode(P_PRICEFORMID IN VARCHAR2,
P_VENDOR_CODE IN VARCHAR2,
P_VENDOR_SITE_CODE IN VARCHAR2,
P_VAT_CODE IN VARCHAR2,
P_ITEM_CODE IN VARCHAR2,
P_EFFECTIVE_DATE in VARCHAR2,
P_PURCHASER IN VARCHAR2,
P_CHECKER IN VARCHAR2,
P_AUDITOR IN VARCHAR2,
P_POCT IN VARCHAR2,
P_UNIT_PRICE IN VARCHAR2,
P_PASSED_DATE IN VARCHAR2,
P_TERMS_DESC IN VARCHAR2,
v_retval out number);
end PO_CAS_PRICE_PKG;
调用函数取得返回值的Example
复制内容到剪贴板 程序代码
public string GetItemDescription(string item_code, int org_id)
{
oracleParameter[] Parms =
{
new oracleParameter("p_item_code",OracleType.VarChar,20),
new oracleParameter("p_org_id",OracleType.Number,4),
new oracleParameter("v_item_desc",OracleType.VarChar,150)
};
Parms[0].Value = item_code;
Parms[1].Value = org_id;
Parms[2].Direction = ParameterDirection.ReturnValue;
IList<Entity.CAS.EBSVendorInfo> vendorItemList = new List<Entity.CAS.EBSVendorInfo>();
oracleHelper.ExecuteNonQuery(OracleHelper.ConnectionStringProfile, CommandType.StoredProcedure, "PO_VENDORS_PKG.GetItemDescription", Parms);
return Parms[2].Value.ToString().Trim();
}
Function:
复制内容到剪贴板 程序代码
function GetItemDescription(p_item_code in varchar2, p_org_id number)
return varchar2 is
v_item_desc varchar2(150);
begin
select msib.DESCRIPTION item_desc
into v_item_desc
from MTL_SYSTEM_ITEMS_B msib
where msib.SEGMENT1 = trim(p_item_code)
and msib.ORGANIZATION_ID = p_org_id;
return v_item_desc;
end GetItemDescription;
初学过程中的一点小经验,与大家分享,欢迎指正.
Web开发电子期刊2009年第9期(总第37期)
作者:admin 日期:2009-09-28
[译]使用C#的用户控件创建ActiveX
作者:admin 日期:2009-08-31
文章:Create an ActiveX using a Csharp Usercontrol
来源:http://www.codeguru.com/csharp/.net/net_general/comcom/article.php/c16257
原著作者:Andreas Verhamme
翻译:Dezai
这篇文章主要是介绍如何在C#中如何使用DotNet的用户控件来创建ActiveX控件.你可以设计ActiveX的相关属性,方法和事件.
开发环境:Visual Studio2005
来源:http://www.codeguru.com/csharp/.net/net_general/comcom/article.php/c16257
原著作者:Andreas Verhamme
翻译:Dezai
这篇文章主要是介绍如何在C#中如何使用DotNet的用户控件来创建ActiveX控件.你可以设计ActiveX的相关属性,方法和事件.
开发环境:Visual Studio2005
Web开发电子期刊2009年第8期(总第36期)
作者:admin 日期:2009-08-06
Oracle几个常用的伪列(Pseudo-column)使用
作者:admin 日期:2009-07-14
Oracle的Pseudo-column,常被翻译成伪列,也有人翻译成虚拟字段。常常有我们的数据操作中带来一些意想不到的效果.
常用到的主要有
sysdate, systimestamp,RowNum ,RowID, CURRVAL, NEXTVAL,UID, USER,Level,ORA_ROWSCN
1.SYSDATE, SYSTIMESTAMP,
SYSDATE 返回当前的系统时间。SYSTIMESTAMP 以TIMESTAMP WITH TIMEZONE 返回当前的日期和时间 sysdate是取机器的时间的, 而systimestamp是显示数据库的时区所在的时间
Select SysDate from dual
获取当前服务器时间
结果: 2009-07-14 8:39:28
select sysdate,sysdate - interval '1' MINUTE from dual
常用到的主要有
sysdate, systimestamp,RowNum ,RowID, CURRVAL, NEXTVAL,UID, USER,Level,ORA_ROWSCN
1.SYSDATE, SYSTIMESTAMP,
SYSDATE 返回当前的系统时间。SYSTIMESTAMP 以TIMESTAMP WITH TIMEZONE 返回当前的日期和时间 sysdate是取机器的时间的, 而systimestamp是显示数据库的时区所在的时间
Select SysDate from dual
获取当前服务器时间
结果: 2009-07-14 8:39:28
select sysdate,sysdate - interval '1' MINUTE from dual
Web开发电子期刊2009年第7期(总第35期)
作者:admin 日期:2009-07-06
Oracle学习:包
作者:admin 日期:2009-06-22
Oracle的程序包是由包头和包体组成(一般也称为程序包说明和程序包体),是一种将多个程序员模块(函数 存储过程 变量 游标等)组合起来的一个Function.
1. 与一般的程序模块的区别在于:程序包有两部分组成,包头可以将其看作一个对外的接口来使用,而包体则可以看作具体接口业务的具体实现,包体的声明部分与PL/SQL中的函数或存储过程的声明 部分差不多.但在包体中的变量、常量、游标对包用户而言是不可见的。
2. 程序包的作用:程序包就像面向对象过程的一个具体类的实现,具有结构化、重用性、模块性的特点,同时程序包中所定义的变量及常量可根据业务逻辑的需要定义为不可见或可见性,包将功能的接口与功能的实现相分离,让代码的维护更加容易,同时通过在包体中保持数据的安全防止用户直接对数据进行访问。
3. 包头(程序包说明)
包头是oracle包与应用程序的接品,用于定义包中的公有组件(变量、常量、存储过程、函数、游标等)。包头所定义的公用组件不仅可以在包内使用,也可以在其它存储过程或函数中使用权。
4. 包体(程序包体)
5. 包头的格式
Create or replace package package_name is| as
[PRAGMA SERIALLY_REUSABLE;]
公有数据类型定义
公有变量声明
1. 与一般的程序模块的区别在于:程序包有两部分组成,包头可以将其看作一个对外的接口来使用,而包体则可以看作具体接口业务的具体实现,包体的声明部分与PL/SQL中的函数或存储过程的声明 部分差不多.但在包体中的变量、常量、游标对包用户而言是不可见的。
2. 程序包的作用:程序包就像面向对象过程的一个具体类的实现,具有结构化、重用性、模块性的特点,同时程序包中所定义的变量及常量可根据业务逻辑的需要定义为不可见或可见性,包将功能的接口与功能的实现相分离,让代码的维护更加容易,同时通过在包体中保持数据的安全防止用户直接对数据进行访问。
3. 包头(程序包说明)
包头是oracle包与应用程序的接品,用于定义包中的公有组件(变量、常量、存储过程、函数、游标等)。包头所定义的公用组件不仅可以在包内使用,也可以在其它存储过程或函数中使用权。
4. 包体(程序包体)
5. 包头的格式
Create or replace package package_name is| as
[PRAGMA SERIALLY_REUSABLE;]
公有数据类型定义
公有变量声明
Oracle包操作:增删改除查
作者:admin 日期:2009-06-19
Web开发电子期刊2009年第6期(总第34期)
作者:admin 日期:2009-06-04
Web开发电子期刊2009年第5期(总第33期)
作者:admin 日期:2009-05-09
Oracle学习:管理表的策略
作者:admin 日期:2009-04-26
设计表
开发数据库应用系统时,数据库管理员负责规划和建立表空间,而规划和建立表则往往是由应用开发人员完成的。应用开发人员设计表时应考虑以下因素:
<1>在为表、列、索引的视图、同义词、触发器等与表有关的对象命名时,应该使用权有意义的名称,其格式要有利于区分这些对象。
<2>为了给用户和其它人员提供有意义的帮助信息,应该使用权Comment命令描述表、列的作用.
<3>设计表时,应该使用权范式来规划每个表.范式分为第一范式 第二范式 第三范式 范式越高,表的设计越规范.
<4>定义表列时,应该选择合适的数据类型和长度,为了节省存储空间,应该将可以取Null值的列放在后面.
<5>确定表中所需的完整性约束。
<6>在合适的情况下,使用簇表以节省存储空间并提高特定类型的SQL语句的性能.
规划表的类型
在Oracle数据库中,存储用户数据可以使用标准表 索引表 簇表 和分区表.
标准表:数据按堆组织,以无序方式存放在单独表的表段中.这种表是最基础最常用的数据库表类型,是默认情况下创建的表.
索引表:数据是以”B-树”结构存放在主键约束所对应的索引段中.使用索引表时,索引叶子节点不仅包含了键列的数据还包含了其他非键列的数据。
开发数据库应用系统时,数据库管理员负责规划和建立表空间,而规划和建立表则往往是由应用开发人员完成的。应用开发人员设计表时应考虑以下因素:
<1>在为表、列、索引的视图、同义词、触发器等与表有关的对象命名时,应该使用权有意义的名称,其格式要有利于区分这些对象。
<2>为了给用户和其它人员提供有意义的帮助信息,应该使用权Comment命令描述表、列的作用.
<3>设计表时,应该使用权范式来规划每个表.范式分为第一范式 第二范式 第三范式 范式越高,表的设计越规范.
<4>定义表列时,应该选择合适的数据类型和长度,为了节省存储空间,应该将可以取Null值的列放在后面.
<5>确定表中所需的完整性约束。
<6>在合适的情况下,使用簇表以节省存储空间并提高特定类型的SQL语句的性能.
规划表的类型
在Oracle数据库中,存储用户数据可以使用标准表 索引表 簇表 和分区表.
标准表:数据按堆组织,以无序方式存放在单独表的表段中.这种表是最基础最常用的数据库表类型,是默认情况下创建的表.
索引表:数据是以”B-树”结构存放在主键约束所对应的索引段中.使用索引表时,索引叶子节点不仅包含了键列的数据还包含了其他非键列的数据。
Oracle学习:数据库规划
作者:admin 日期:2009-04-20
Oracle相对于SQL的复杂程序有过之而无不及,DBA管理数据库需要事先有一个完善的数据库规划方案.
一.对数据库中可能包含的表和索引等方案对象的大小数量进行评估,确定所需数据库的空间大小并以此创建表空间.
二.对数据库所包含的操作系统文件的布局进行规划,结合数据库运行的特点来考虑它们在磁盘上的存放位置,以便适当均衡磁盘I/O操作,改善数据库性能.
三.考虑用Oracle管理文件的特性来创建和管理包含数据库存储的操作系统文件.
四.为新数据库选择全局数据库名称.在确定全局数据库名称的时候也需要确定数据库名和系统标识符SID,全局数据库是数据库在网络结构中最重要的属性,是其在网络结构中的名称和位置.
五.熟悉与数据库相关的初始化参数(初始化参数文件)
六.选择数据库字符集.包括数据字典中的数据都存储在数据库字符集中.在创建数据库时必须指定数据库字符集,若用户使用不同的字符集访问数据库,则需要选择包含这些用户的字符集的超集,这样才能确保系统很方便地使用替代字符完成字符转化,节省时间.
七.选择标准的数据库块尺寸.
八.使用撤消表空间来管理撤消记录.
九.建立一套完善的备份和恢复策略或方案,防止数据库出现错误.通过多路复用技术保护控制文件,选择合适的备份模式并管理联机和归档的重要日志.
十.熟悉数据库启动和关闭实例