记录Harde学习成长生活的点点滴滴.
2012-02-10 数据库


没有评论
27 次浏览

ORA-12514错误的解决办法

Ora-12514:TNS:无监听程序
解决办法:TNSListener服务没有启动,把服务启动就可以了。
通常的名字:OracleOraDb10g_home1TNSListener:
该服务对应 %Oracle_Hoem\bin\TNSLSNR.EXE

Ora-12514:TNS:监听程序当前无法识别链接描述符中请求的服务。
对于这个错误,网上的做法通常是这样的:

打开:%Oracle_Hoem%/network/admin/listener.ora文件

SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = PLSExtProc)
(ORACLE_HOME = D:\Oracle\Oracle10g)
(PROGRAM = extproc)
)
后面添加:
(SID_DESC =
(GLOBAL_DBNAME = ORACLE)
(ORACLE_HOME = D:\Oracle\Oracle10g)
(SID_NAME = ORACLE)
)

最后变成:
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = PLSExtProc)
(ORACLE_HOME = D:\Oracle\Oracle10g)
(PROGRAM = extproc)
) (SID_DESC =
(GLOBAL_DBNAME = ORACLE)
(ORACLE_HOME = D:\Oracle\Oracle10g)
(SID_NAME = ORACLE)
)
)

不过我觉得不用这么费力。首先关闭监听器服务,然后关闭数据库服务,启动数据库服务,启动监听器服务。就是这么简单。

2011-08-22 数据库


没有评论
23 次浏览

Ora-01791 不是Selected表达式(SELECT式が無効です)

最近做一个项目用到了Oracle数据库,今天在调查原代码时遇到一处错误,提示”SELECT式が無効です”百思不得其解。后来发现
是”DISTINCT”关键字在作祟。原句部分代码如下

1
2
3
4
5
6
SELECT DISTINCT
  F200.PLACE_NO AS PLACE_NO
--省略若干代码
ORDER BY
  F200.UP_DATE || F200.UP_TIME
  ,F200.YOYAKU_NO

去掉DISTINCT就搞定了~

借用:http://fluagen.blog.51cto.com/146595/95302作者的原话:

查到关于这个ora错误的解释:
如果在ORDER BY中指定多个列,结果将先按照子句中的第一个列排序,然后第二个,依此类推
在SELECT中未出现的列名也可用于ORDER BY 子句中,主要TABLE中有就行,但如果SELECT子句中出现了DISTINCT关键字,则只能用出现过的列名,而且如果SELECT子句中使用了任何运算符,在ORDER BY 子句中必须保持和SELECT子句中表达式完全一致,否则出现ORA-01791 ERROR

2011-05-18 数据库


没有评论
200 次浏览

insert into 后获得自动插入的id(select @@identity)

做软件时常常遇到这样的情况~对于有自动增长列的表,我们在insert 以后想要得到自动增长的id~

在MSSQL下做到很容易,在你的insert语句末尾加上@@identity是绝大多数学生或新手的做法~

1
;select @@identity

但事实上,并不推荐使用@@identity来获取自动增长值~
因为@@IDENTITY 返回值,是当前会话的“所有作用域”中的任何表最后生成的标识值。
有很大的不确定性

所以建议使用SCOPE_IDENTITY()与IDENT_CURRENT(‘表名’)代替
所以推荐的写法是

1
2
3
;select SCOPE_IDENTITY()
 
;select IDENT_CURRENT('table')

举例

1
insert into UserInfo values('admin');select IDENT_CURRENT('UserInfo') as id

注解:
IDENT_CURRENT 返回为任何会话和任何作用域中的特定表最后生成的标识值。
IDENT_CURRENT 不受作用域和会话的限制,而受限于指定的表。
SCOPE_IDENTITY 返回为当前会话和当前作用域中的任何表最后生成的标识值

Nullable 在ExecuteNonQuery()时出现问题的解决办法

上一篇文章简单介绍了下Nullable

Nullable在实际使用中很方便,但处理不好,问题也会让人很头疼
比如说ExecuteNonQuery()时如果使用XXXparameter
就可能出现 “需要参数 ‘@XXX’,但未提供该参数。”

解决起来其实也蛮简单
比如说原来是
parameters[0].Value = Name;
改成下面这样就可以了
parameters[0].Value = (object)Name??DBNull.Value;

其他的话不用多少了~

2009-12-30 数据库


没有评论
153 次浏览

数据库游标[T-SQL]

这篇文章主要是我自己用来简单记录下游标的,有兴趣的可以看看
高手Pass~

今天又朋友问我的,可惜我也不明白,找了点相关资料看了下。

以下引用自MSDNhttp://msdn.microsoft.com/zh-cn/library/ms191179.aspx
游标(数据库引擎)
关系数据库中的操作会对整个行集起作用。由 SELECT 语句返回的行集包括满足该语句的 WHERE 子句中条件的所有行。
这种由语句返回的完整行集称为结果集。应用程序,特别是交互式联机应用程序,并不总能将整个结果集作为一个单元来有效地处理。
这些应用程序需要一种机制以便每次处理一行或一部分行。游标就是提供这种机制的对结果集的一种扩展。

(我是当做程序中foreach来理解的)

概念基本了解了
那么看下流程吧
1.定义游标
2.打开游标
3.使用游标
4.关闭游标

先来了解几个单词
declare 不用说了 定义用的
cursor 游标的类型
open 打开游标
FETCH 通过游标检索特定行
close 关闭游标
deallocate 删除游标引用
点击我阅读全文 »

返回顶部
分享按钮