大橙子网站建设,新征程启航
为企业提供网站建设、域名注册、服务器等服务
需要用到动态sql。
创新互联专注于宁化网站建设服务及定制,我们拥有丰富的企业做网站经验。 热诚为您提供宁化营销型网站建设,宁化网站制作、宁化网页设计、宁化网站官网定制、微信小程序开发服务,打造宁化网络公司原创品牌,更为您提供宁化网站排名全网营销落地服务。
1、首先要给用户赋予权限:
grant create any table to 用户名;
2、创建存储过程:
create procedure p_create_table
(v_sql varchar2)--输入建表语句
as
begin
execute immediate v_sql;
end;
3、执行:
利用游标将查询结果插入到一个表里!
或者存储到定义的数组中!
可以取,用substr函数和instr函数共同实现,但是实现起来不是太容易,费了好大劲给你取了v1和v2,那个v3你自己照个写一写吧,全当自己学习了
select substr('v1,v2,v3',1,instr('v1,v2,v3',',',1,1)-1) from dual;
select substr('v1,v2,v3',instr('v1,v2,v3',',',1,1)+1,(instr('v1,v2,v3',',',instr('v1,v2,v3',',',1,1)-1,2)-(instr('v1,v2,v3',',',1,1)+1))) from dual;
这两句在oracle中可直接运行,其中'v1,v2,v3'你可以用某个字段来代替
比如你的表为user
你可以先创建一个类User,把数据库中的数据放入User对象中
再用集合存放每个User对象,如:
public ArrayList findAllUsers(){
ArrayList al=new ArrayList();
//循环查询数据库
while(...){
String name=....;//从数据库中查出
User user=new User();
user.name=name;
...以此类推
al.add(user);
}
return al;
}
返回结果集合成什么样?
一条记录直接输出?
你可以把返回的结果插到一张表里,然后去看不就行了吗?
你可以把每次查询,改成每次插入一张表里,回过头再看结果集
给你个范例:
CREATE OR REPLACE FUNCTION f_jax_str2tab(p_str IN VARCHAR2,
p_sep varchar2 default ','
) RETURN type_jax_varc2tab IS
/******************************************************************
Ver1.0 Created by jaxzhang on 2009-06-08
把字符串(1*2*3*4*5)转换为内存表形式
create or replace type type_jax_varc2tab is table of varchar2(2000);
测试用例:SELECT * FROM TABLE(f_jax_str2tab('1*2*3*4*5','*'));
******************************************************************/
v_str varchar2(2000);
v_cnt NUMBER ;
v_numtab type_jax_varc2tab := type_jax_varc2tab(); --返回内存表
BEGIN
select decode(substr(p_str,-1),p_sep,p_str,p_str || p_sep) into v_str from dual;
select length(v_str) - length(REPLACE(v_str, p_sep)) into v_cnt from dual;
FOR i IN 1 .. v_cnt LOOP
v_numtab.EXTEND;
v_numtab(i) := substr(v_str, 1, instr(v_str, p_sep) - 1);
v_str := substr(v_str, instr(v_str,p_sep) + 1);
END LOOP;
RETURN v_numtab;
EXCEPTION
WHEN OTHERS THEN
v_numtab.DELETE;
END;