当前位置:首页 » 编程语言 » 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中也需要完整输入才可以。

热点内容
90岁老年人助听器如何配置 发布:2025-07-02 00:59:16 浏览:815
配置ip代理服务器加速软件 发布:2025-07-02 00:58:32 浏览:693
linux链接库 发布:2025-07-02 00:53:06 浏览:676
数据库的划分的 发布:2025-07-02 00:43:19 浏览:655
补码源码和 发布:2025-07-02 00:37:25 浏览:979
centos7mysql远程访问 发布:2025-07-02 00:35:58 浏览:712
有线认证服务器地址错误 发布:2025-07-02 00:33:22 浏览:278
本田思域2021款买哪个配置 发布:2025-07-02 00:31:43 浏览:326
安卓十二系统什么时候更新 发布:2025-07-02 00:12:28 浏览:347
shell脚本需要编译链接 发布:2025-07-02 00:04:20 浏览:476