當前位置:首頁 » 編程語言 » 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-07-01 13:00:09 瀏覽:593
ewebeditor上傳漏洞 發布:2025-07-01 13:00:08 瀏覽:834
電腦無解壓 發布:2025-07-01 12:51:18 瀏覽:732
中國股票市場交易資料庫 發布:2025-07-01 12:43:23 瀏覽:622
oppoa37怎麼給應用加密 發布:2025-07-01 12:20:53 瀏覽:644
java毫秒數 發布:2025-07-01 12:19:14 瀏覽:520
評委打分c語言 發布:2025-07-01 12:10:05 瀏覽:145
c語言中e的次方 發布:2025-07-01 12:02:23 瀏覽:179
php訪問量統計代碼 發布:2025-07-01 11:57:56 瀏覽:211
粵核酸的賬號密碼是什麼 發布:2025-07-01 11:52:41 瀏覽:210