我想写一个存储过程
有a,b,c几个变量
语句 :
select * from tablename where d >a and d <b;我想把上面语句中的 "d>a and d<b" 放入一个字符串变量strwhere中,也就是写成这样:select * from tablename where strwhere;请问这个strwhere怎么给它赋值呢?
有a,b,c几个变量
语句 :
select * from tablename where d >a and d <b;我想把上面语句中的 "d>a and d<b" 放入一个字符串变量strwhere中,也就是写成这样:select * from tablename where strwhere;请问这个strwhere怎么给它赋值呢?
解决方案 »
- 想查看所有的分区列以及对应的表空间,分区类型.如何查询?
- 小小的问一下。.
- 求救!!PL/SQL的问题 我都快郁闷死了 在线等
- 在ORACLE中查找XML数据(在线等待)
- 提示"ORA-01536: 超出表空间'USERS'的空间限量",问题出在哪里了?
- 谁有比较详细的建立快照复制的资料???????????????????????????????????
- Oracle里有没有随机函数?我想把一个表里的数据选出来,然后按照给定的百分比随机插入另外一张表
- 请问如何查询条件是含有%的记录
- oracle 导入导出问题。
- long_to_char 函数
- 关于触发器的问题,求教高人!
- Oracle 的delete删除
楼上的能否具体一点!
在程序里面我知道怎么写!
if a is not null then
strwhere ='and d>a';
end if
if b is not null then
strwhere ='and d<b';
end if
selecl * from tablename where 1=1 strwhere ;我这样写哪里错了?
m_begintime varchar2(36);
m_endtime varchar2(36);
m_proid number(5);
m_serid varchar2(36);
m_usernum varchar2(21);
m_notes number(5);
m_serprovide number(5);
cursor c1 IS select * from platform.tblselcondition;
strwhere1 varchar2(256);
strwhere2 varchar2(256);
m_upnum varchar2(256);
BEGIN OPEN c1;
LOOP
FETCH c1 into m_begintime,m_endtime,m_proid,m_serid,m_usernum,m_notes,m_serprovide;
EXIT WHEN c1%NOTFOUND;
END LOOP;
close c1;
--DBMS_OUTPUT.PUT_LINE(m_serid);
IF m_begintime is not null THEN
strwhere1:='Recvdate > m_begintime';
strwhere2:='sendtime > m_begintime';
END IF;
IF m_endtime is not null THEN
strwhere1:='AND Recvdate < m_endtime';
strwhere2:='AND sendtime < m_endtime';
END IF;
IF m_serid is not null then
strwhere1:='AND ServiceID = m_serid';
strwhere2:='AND ServiceID = m_serid';
DBMS_OUTPUT.PUT_LINE(m_serid);
END IF;
IF m_usernum is not null then
strwhere1:='AND SrcTerminalID = m_usernum';
strwhere2:='AND DestTerminalID = m_usernum';
END IF;
DBMS_OUTPUT.PUT_LINE(strwhere1);
IF m_serprovide = 0 then
execute immediate 'select count(1) from synrecvsmscm where 1=1 strwhere1'return into m_upnum;
END IF;
DBMS_OUTPUT.PUT_LINE(m_upnum);
End;编译时没错,执行的时候报错!
应该是
execute immediate 'select count(1) from synrecvsmscm where 1=1 '||strwhere1return into m_upnum;
吧
可是我发现这样写 strwhere1 的值只是最后面的那一个,而上面符合条件的连接不起来啊!
赋值语句应怎么写才能连在一起呢?
execute immediate 'select count(1) from synrecvsmscm where 1=1 '||strwhere1return into m_upnum;invalid column name我检查了列名不会错的,我换成count(列名)也没用
还是报 invalid column name