当前位置:首页 » 编程语言 » sql返回值oracle

sql返回值oracle

发布时间: 2024-12-16 10:09:06

A. 怎么用Oracle 存过中执行多个查询sql 并返回结果,SQL和返回结果都存在一张表里面

你这种要求不应该这么设计,首先你十几条的SQL的结果集字段类型和个数不一定一样,所以没法存储,只有你的SQL返回的结果集都一样或者可以枚举且字段类型均一样,这样就可以用自定义类型作为B字段。

解决方案一:单表存储结果

思路:要求所有的SQL返回结果集列数不多于N个,然后创建一个N个字段的TYPE,此处假设N=5,代码如下:

--创建多个字段的type
createorreplacetypetest_column_typeasobject(
col_1varchar2(300),
col_2varchar2(300),
col_3varchar2(300),
col_4varchar2(300),
col_5varchar2(300)
);
--创建引用多个字段的type
createorreplacetypetest_tab_column_typeastableoftest_column_type;

--创建表
createtabletest_tab(
avarchar2(300),
btest_tab_column_type)
nestedtablebstoreasnested_tabreturnasvalue;


--写数据的语句
insertintotest_tab
values
('1',test_tab_column_type(test_column_type(1,1,1,1,1),test_column_type(2,2,2,2,2)));

解决方案二:多表存储结果

思路:主子表,先创建一个表只用来存SQL,另外一个表存SQL的结果,大致如下:

createt_sql(
idnumber,
avarchar2(3000)
);
createt_sql_result(
idnumber,
col1varchar2(400),
col2varchar2(400),
...
colNvarchar2(400)
);

如果所有SQL返回的列数都一样,那很简单,直接写到 t_sql_result 表里面即可。

如果SQL返回的列数不一样,则需要判断每个sql返回的列数,然后拼接动态SQL,将结果写入t_sql_result 表。

B. Oracle 输入sql命令后 返回值全都是2 怎么回事

2表示第二行。
在sqlplus工具中分号才是结尾。如果在一个sql语句的结尾没有写分号,那么sqlplus认为该sql语句没有完成,回车为换行,那么oracle就自动命名原来的为第一行,现在编辑的为第二行,如果再输入一个回车,那么就会出现3,以此类推,直到出现分号为止。
sqlplus是最基础的oracle数据库交互工具,现在的其他oracle交互工具都是在此基础上发展而来。sqlplus秉承着严格的sql规范,没有对任何的功能进行打包,一切内容都需要手动输入,所以包括在其他工具中可以免除的分号等,在sqlplus中也需要完整输入才可以。

热点内容
手机java软件下载 发布:2024-12-16 13:21:15 浏览:834
安卓底层数据在哪个文件夹 发布:2024-12-16 13:08:11 浏览:379
电脑怎么弄配置高 发布:2024-12-16 13:02:20 浏览:789
b东解说的安卓号在哪个区 发布:2024-12-16 12:45:54 浏览:632
双剑源码 发布:2024-12-16 12:41:00 浏览:350
如何查找安卓文件 发布:2024-12-16 12:15:23 浏览:563
突破画线源码 发布:2024-12-16 12:09:55 浏览:846
无线wifi如何加密 发布:2024-12-16 12:09:13 浏览:611
优惠网源码 发布:2024-12-16 11:48:19 浏览:539
压缩黑火药 发布:2024-12-16 11:43:13 浏览:904