随笔分类 -  DB--Oracle

摘要:① ORA-00936 缺失表达式实例--错误的情况 1 /// <summary> 2 /// 获取城市信息结果集 3 /// </summary> 4 /// <returns></returns> 5 public DataSet GetCityDS(CityModel cityModel) 6 { 7 string sql = @"select t1.CITY_ID, 8 t1.CITY_NAME, ... 阅读全文
posted @ 2012-12-25 17:03 杨斌_济南 阅读(685) 评论(0) 推荐(1)
摘要:sql语句:select count(*) from tablename; 然后读取count(*)的值判断记录是否存在。对于这种方法性能上有些浪费,我们只是想判断记录记录是否存在,没有必要全部都查出来。 以下这个方法是我推荐的。 sql语句:select 1 from tablename where col = col limit 1; 然后读取语句执行所影响的行数。 当然这里limit 1很重要。这要mysql找到一条记录后就不会在往下找了。这里执行所影响的行数不是0就是1,性能提高了不少。 如果你用的是PDO,可以用rowCount(),很容易就都到执行所影响的行数。 这里还有人可能会去 阅读全文
posted @ 2012-12-21 11:28 杨斌_济南 阅读(386) 评论(0) 推荐(0)
摘要:oracle级联删除问题:有三张表,分别是省、市、县,如果要在省表删除一个具体省,则该省下所有的省市和县都删除掉;如果在市表中删除一个具体市,该城市下的所有县也将删除掉。解决办法:在被级联的表设定外连接,并指定on delete的值(有“on delete cascade”和“on delete set null”作为值)具体说明:省表字段 PRO_IDVARCHAR2(20)省份编号省份编号PRO_NAMEVARCHAR2(30)省份名称省份名称PRO_INDEXNUMBER(18,4)排序排序PRO_P_IDVARCHAR2(20)省份父编号(数据操作时使用)省份父编号(数据操作时使用.. 阅读全文
posted @ 2012-12-19 14:12 杨斌_济南 阅读(1583) 评论(0) 推荐(0)
摘要:oracle补零1.前端补0: Sql代码 select lpad('345',8,'0') from dual; select to_char('345','00000000') from dual;select lpad('345',8,'0') from dual; select to_char('345','00000000') from dual; 2.后端补0: Sql代码 select rpad('345',8,'0') 阅读全文
posted @ 2012-12-10 14:32 杨斌_济南 阅读(2803) 评论(0) 推荐(0)
摘要:在SELECT命令中使用CONNECT BY和蔼START WITH子句可以查询表中的树型结构关系。其命令格式如下:SELECT。。。CONNECT BY {PRIOR列名1=列名2|列名1=PRIOR裂名2}[START WITH];其中:CONNECT BY子句说明每行数据将是按层次顺序检索,并规定将表中的数据连入树型结构的关系中。PRIORY运算符必须放置在连接关系的两列中某一个的前面。对于节点间的父子关系,PRIOR运算符在一侧表示父节点,在另一侧表示子节点,从而确定查找树结构是的顺序是自顶向下还是自底向上。在连接关系中,除了可以使用列名外,还允许使用列表达式。START WITH子句 阅读全文
posted @ 2012-12-07 09:31 杨斌_济南 阅读(1402) 评论(0) 推荐(0)
摘要:--按店铺分类统计订单状态select sum(A) as 已付款 ,sum(B) as 未付款,C as 店铺名from( select case when status_id=2 then 1 else 0 end AS A , case when status_id=4 then 1 else 0 end AS B, shop_id AS C from t_xs_trade where status_id in(2,4)) group by C; 结果: 已付款未付款店铺名1625shop042173229shop02311shop084270s... 阅读全文
posted @ 2012-11-03 11:25 杨斌_济南 阅读(5814) 评论(0) 推荐(0)
摘要:手工备份单表备份(前提库的结构是一样的) 导出: 开始钮->运行->输入CMD->进入DOS界面 EXP 用户名/密码@连接字符串 GRANTS=Y TABLES=(stu) file=C:\文件名.DMP 导入: 开始钮->运行->输入CMD->进入DOS界面 IMP 用户名/密码@连接字符串 IGNORE=Y TABLES=(stu) FULL=N file=C:\文件名.DMP 其中stu是你要的表名 全库导 导出: 开始钮->运行->输入CMD->进入DOS界面 EXP 用户名/密码@连接字符串 FULL=Y file=C:\文件名 阅读全文
posted @ 2012-10-09 15:08 杨斌_济南 阅读(443) 评论(0) 推荐(0)
摘要:DBCA--Database Configuration Assistant--数据库配置助手使用它我们可以创建数据库,配置现有数据库的数据库选件,删除数据库,以及管理数据库模板。启动DBCA在Oracle的服务器端通过命令进入C盘根目录下,打出“DBCA”就可以了。 阅读全文
posted @ 2012-08-30 15:44 杨斌_济南 阅读(609) 评论(0) 推荐(0)
摘要:Oracle客户端重要点安装说明(总结人:杨斌)安装文件:步骤一:步骤二:步骤三安装完成功之后,在程序中会显示如下的图步骤四配置网络连接:步骤五打开服务步骤六配置Oracle服务器端的IP地址和端口号步骤七命名服务名称步骤八单击连接测试,如果有错误,单击“更改登录”步骤九登录测试步骤十测试成功最后结果: 阅读全文
posted @ 2012-08-30 14:53 杨斌_济南 阅读(2009) 评论(1) 推荐(0)
摘要:Ref_cursor属于动态cursor(直到运行时才知道这条查询)。返回一个Table.--说明:从ERP数据库查询出所有的店铺 --作者:杨斌 --日期:2012-08-09 procedure getAllShopsFromERP( all_shops_out out sys_refcursor, --返回店铺结果集 out_error_row out number, --错误行 out_error_msg out varchar2 --错误信息 ) is str_sql varchar2(4000);--定义查询SQL语句变量 begin out_error_row :=0;--... 阅读全文
posted @ 2012-08-24 11:38 杨斌_济南 阅读(335) 评论(0) 推荐(0)
摘要:EXECUTE IMMEDIATE作用: 可以执行动态的拼接sql语句和PL/SQL块;普通用法: 直接执行拼接的sql语句。 execute immediate str_sql;高级用法:把执行的结果赋给自定义数组或者一种类型。...... TYPE itemrecord IS RECORD ( item_id M_CTL.CTL_CD%TYPE, item_name M_CTL.CTL_CHARA1%TYPE); TYPE item_table_type IS TABLE OF itemrecord ;rc_item_table item_table_type := item_table_ 阅读全文
posted @ 2012-08-20 16:28 杨斌_济南 阅读(353) 评论(0) 推荐(0)
摘要:dual是Oracle与数据字典一起自动创建的一个虚拟表﹐它只有一列﹕DUMMY﹐其数据类型为﹕VARCHAR2(1)。dual属于sys模式﹐但所有用户都可以使用dual名称访问它。用来查那些不属于实际表里的内容,有时也用来检查某表某条件的记录存在性。实例如下: str_sql := ' merge into t_xs_trade t1 ' || chr(10) || ' using (select '''|| prm_tid ||''' tid from dual ) t2 ' || chr(10) || &# 阅读全文
posted @ 2012-08-18 16:23 杨斌_济南 阅读(387) 评论(0) 推荐(0)
摘要:Oracle_merge into 中 using 后的查询表如果有参数的情况。先说一下merge into 的基本语法/*语法:MERGE [INTO [schema .] table [t_alias] USING [schema .] { table | view | subquery } [t_alias] ON ( condition ) WHEN MATCHED THEN merge_update_clause WHEN NOT MATCHED THEN merge_insert_clause;*/一般的 using 后是跟着一个具体的表名,但实际的开发中有时是带参数的情况,以上的 阅读全文
posted @ 2012-08-11 15:57 杨斌_济南 阅读(2119) 评论(0) 推荐(0)
摘要:存储过程中的变量:以 ''||变量名 ||'' 的形式。点的解释:一个点' 表示是字符串。两个点''连接变量,之后再加一个点',最后编译成‘变量值’。存储过程代码: --说明:把店铺操作界面上选择的店铺插入到线上订单数据库的店铺表里 --作者:杨斌 --日期:2012-08-09 procedure insertSelectedShops( strSelectedShopID in varchar2, --店铺操作界面上选择的店铺ID,是"店铺ID1,店铺ID2,店铺ID3......"的形式。 out_err 阅读全文
posted @ 2012-08-10 13:45 杨斌_济南 阅读(2028) 评论(0) 推荐(0)
摘要:存储过程--把查询出来的数据直接插入表sql_str := ' insert into T_XS_SHOP(' || chr(10) || 'SHOP_ID,' || chr(10) || 'TITLE' || chr(10) || ')' || chr(10) || '(' || chr(10) || 'select shop_id,shop_name from T_Base_ShopPublic@yb' || ' where shop_id in (' || strSelecte 阅读全文
posted @ 2012-08-09 16:37 杨斌_济南 阅读(1976) 评论(0) 推荐(0)
摘要:chr()函数将ASCII码转换为字符:字符 –》 ASCII码;ascii()函数将字符转换为ASCII码:ASCII码 –》 字符;在oracle中chr()函数和ascii()是一对反函数。chr()函数示例:SQL> select chr(65) from dual;CHR(65)-------Aaccii()函数示例:SQL> select ascii('A') from dual;ASCII('A')---------- 65转自:http://zhidao.baidu.com/question/220070478.html 阅读全文
posted @ 2012-08-09 10:05 杨斌_济南 阅读(17180) 评论(0) 推荐(0)
摘要:在一个内在的异常中,SQLCODE返回Oracle错误的序号,而SQLERRM返回的是相应的错误消息,错误消息首先显示的是错误代码。 阅读全文
posted @ 2012-08-09 09:58 杨斌_济南 阅读(310) 评论(0) 推荐(0)
摘要:sys_refcursor 和 cursor 优缺点比较优点比较优点一:sys_refcursor,可以在存储过程中作为参数返回一个table格式的结构集(我把他认为是table类型,容易理解,其实是一个游标集), cursor 只能用在存储过程,函数,包等的实现体中,不能做参数使用。优点二:sys_refcursor 这东西可以使用在包中做参数,进行数据库面向对象开放。哈哈。我喜欢。cursor就不能。缺点比较:缺点:sys_refcursor 不能用open,close ,fetch 进行操作。不好学,难理解。cursor可以用 open,close ,fetch操作,容易学,易懂其他就目 阅读全文
posted @ 2012-08-09 09:47 杨斌_济南 阅读(11688) 评论(0) 推荐(0)
摘要:Oracle数据库链Database links的作用:在一个用户下,可以获取到另外的用户下的表的数据。使用的时机:跨数据库或者跨用户使用时。步骤:① 创建好Oracle的服务(客户端连接服务器端的配置信息)②创建数据库的链Database links。 create database link yb connect to erp identified by erpusing 'erp'; 解释:其中create database link链的名称(我们可以自定义) connect to 要连接的数据库的用户名 identified by 用户的登录密码,using'要 阅读全文
posted @ 2012-08-09 09:16 杨斌_济南 阅读(19079) 评论(0) 推荐(0)
摘要:存储过程和函数目的是为了 可重复地 执行操作数据库的sql语句的集合。区别是写法和调用上。写法上:存储过程的参数列表可以有输入参数、输出参数、可输入输出的参数; 函数的参数列表只有输入参数,并且有return <返回值类型,无长度说明>。返回值上: 存储过程的返回值,可以有多个值, 函数的返回值,只有一个值。调用方式上: 存储过程的调用方式有:1)、exec <过程名>;2)、execute <过程名>;3)、在PL/SQL语句块中直接调用。函数的调用方式有: 在PL/SQL语句块中直接调用。 具体分为: ----调用FUNCTION add_three_n 阅读全文
posted @ 2012-08-08 11:23 杨斌_济南 阅读(34028) 评论(0) 推荐(0)