Oracle动态SQL语句
在使用ODP.NET进行Oracle编程时,有时候SQL语句非常复杂,需要采用动态构造查询语句的情况,有两种方法可以构造动态的SQL语句,并执行返回结果集。
1、在数据访问层构造SQL语句
例如下面的语句,将构造完整的SQL语句赋值给CommandText,再传递到数据库进行执行,返回结果集。
loadCommand.CommandType = CommandType.Text
loadCommand.CommandText = "Select * from Users"
dataAdapter .SelectCommand = loadCommand
dataAdapter . Fill(data)
dataAdapter .SelectCommand = loadCommand
dataAdapter . Fill(data)
该方法需要将整个SQL的构造过程放在DataAccess层,业务逻辑发生变化,修改不方便,而且每次查询需要传递给数据库很长的查询字符串,传递参数的效率也不高。
2、在存储过程中构造动态SQL语句并执行
以下为一个完整的事例(经过删减),其中RefCursor 为自定义游标类型
PROCEDURE G_Search(P_YearNO IN NUMBER,
P_ControlType IN NUMBER,
P_Progress IN CHAR,
P_DepartID IN VARCHAR2,
P_ProjectName IN NVARCHAR2,
&n
相关文档:
/*=================== 导入/导出 Excel 的基本方法 ===================*/
从Excel文件中,导入数据到SQL数据库中,很简单,直接用下面的语句:
/*===================================================================*/
--如果接受数据导入的表已经存在
insert into 表 select * from
......
在查询分析器中输入以下内容:
set statistics profile on
set statistics io on
set statistics time on
go
go
set statistics profile off
set statistics io off
set statistics time off ......
在DELPHI中常常要用到ADOQUERY中的SQL语句增加信息后执行,当要求增加条件(如参数时)中间的间隔很重要,搞不好就要出错:下举例说明我要表达的意思:
如:一个表:student 有 ksh,xm,xb,lqzy,lqcc几个字段,都为字符型。现要求按xb分组统计人数,同时lqcc要求限定条件。
一般情况下的SQL语句应该为: select xb,count(*) ......
今天遇到一个问题:
在拼一条动态Sql语句时,由于是用字段的值做列名,所以列名用到了汉字。
一运行,报错:在“、”附件有语法错误。
很纳闷,难道超长了?
尝试在企业管理器中添加这个列名,发现添加完之后系统自动添加了一对中括号,对于"aa、bb","aa,bb"也都添加了中括号。
看来是微软为了以防万一,连 ......