當前位置:首頁 » 編程語言 » 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中也需要完整輸入才可以。

熱點內容
雲伺服器掛qq常用ip 發布:2025-03-13 00:52:08 瀏覽:99
大秦帝國之崛起下載緩存 發布:2025-03-13 00:34:31 瀏覽:357
xp系統f盤加密 發布:2025-03-13 00:33:42 瀏覽:129
如何讓刪除的微信恢復出廠設置密碼 發布:2025-03-13 00:21:48 瀏覽:254
七殺腳本 發布:2025-03-13 00:19:28 瀏覽:762
建立多級文件夾 發布:2025-03-13 00:13:34 瀏覽:725
存儲器價格 發布:2025-03-13 00:12:14 瀏覽:761
編譯原理上下文無關文法例題 發布:2025-03-13 00:12:12 瀏覽:95
微視頻腳本怎麼寫 發布:2025-03-12 23:59:54 瀏覽:611
蘋果手機文件夾管理 發布:2025-03-12 23:59:12 瀏覽:100