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

热点内容
编程找点 发布:2025-05-15 20:43:10 浏览:586
php上传临时文件夹 发布:2025-05-15 20:43:00 浏览:656
impala数据库 发布:2025-05-15 20:42:12 浏览:648
android安装插件 发布:2025-05-15 20:41:31 浏览:240
神秘顾客访问 发布:2025-05-15 20:33:39 浏览:296
安卓市场手机版从哪里下载 发布:2025-05-15 20:17:28 浏览:815
幼儿速算法 发布:2025-05-15 20:15:08 浏览:87
best把枪密码多少 发布:2025-05-15 20:13:42 浏览:548
android安装程序 发布:2025-05-15 20:13:20 浏览:560
c语言跳出死循环 发布:2025-05-15 20:06:04 浏览:825