任何機構都知道如何將oracle存儲過程數據表寫入爲輸入參數。以datatable作爲輸入參數的Oracle過程示例
回答
傳遞一個參數爲varchar2
,然後構建您的查詢字符串並使用EXECUTE IMMEDIATE
或作爲遊標執行它。更多示例here
UPDATE。示例:
create table temp11(id int not null);
/
create or replace
procedure test_proc(table_name varchar2)
as
query_str varchar2(200);
begin
query_str := 'INSERT INTO '||table_name||'(id) values (2)';
EXECUTE IMMEDIATE query_str ;
end;
/
exec test_proc('temp11');
commit;
在這些情況下,使用數據庫臨時表很常見。這意味着您可以將數據表記錄插入表中並在不關閉連接的情況下調用您的過程,以便它看到臨時數據並對其進行處理。
的僞代碼將是這樣的:
//Get the data you want to process
DataTable data = GetData();
//Create new Connection
Connection conn = Connection.CreateNew();
//Open the connection
conn.Open()
//Insert the data on a temporary table using the open connection
InsertDataIntoTemporaryTable(conn, data);
//Call the procedure to process the data using the same open connection
CallProcedureToProcessData(conn);
//Finish by ending the connection (everything done in the procedure will be commited)
conn.Close();
另一種可實現的選擇是建立一個CLOB參數的過程,其中應用程序將通過所有的字段和行分隔符連接起來的數據表中的記錄。該過程將不得不以兩種方式拆分它並形成一個更好的結構,就像由varchar2表形成的記錄表一樣。
示例任何提及PLZ –
當然,我可以添加一個我認爲的例子。你沒有找到解決方案嗎? –
雅如果您有解決方案發布,我沒有找到解決方案。 –
以下是將EMPLOYEES
中的一行復制到EMPLOYEES_COPY
的示例。 我希望它能幫助你。
DROP TABLE EMPLOYEES;
/
DROP TABLE EMPLOYEES_COPY;
/
CREATE TABLE EMPLOYEES
(
ID INT,
FIRST_NAME varchar(30),
LAST_NAME varchar(30)
);
insert into EMPLOYEES values(1,'AA','BBB');
insert into EMPLOYEES values(2,'CC','GGG');
insert into EMPLOYEES values(3,'EEE','MMM');
insert into EMPLOYEES values(4,'FFF','ZZZ');
/
CREATE TABLE EMPLOYEES_COPY
(
ID INT,
FIRST_NAME varchar(30),
LAST_NAME varchar(30)
);
/
CREATE OR REPLACE PACKAGE EMPLOYEE as
type t_cursor is ref cursor;
procedure GETALL(curEMPLOYEE out t_cursor);
procedure INSERT_COPY;
end EMPLOYEE;
/
CREATE OR REPLACE PACKAGE BODY EMPLOYEE as
---------------------------------------------
procedure GETALL(curEMPLOYEE out t_cursor) as
begin
open curEMPLOYEE for SELECT id, FIRST_NAME, LAST_NAME
FROM EMPLOYEES;
end GETALL;
---------------------------------------------
procedure INSERT_COPY as
cur t_cursor;
emp employees%rowtype;
begin
GETALL(curEMPLOYEE=>cur);
LOOP
FETCH cur INTO emp;
EXIT WHEN cur%NOTFOUND;
insert into EMPLOYEES_COPY
values(emp.id,emp.FIRST_NAME,emp.LAST_NAME);
END LOOP;
end INSERT_COPY;
end EMPLOYEE;
/
包是非常有用的,因爲你可以組合一個實體的功能。在例子中,我已經對員工進行了分組功能。
可以使用測試的例子:
BEGIN
EMPLOYEE.INSERT_COPY;
commit;
END;
更多信息
Here是類似的問題。
感謝您的答覆Parado,但我沒有做數據庫表到數據庫表我發送它從我的應用程序執行的過程。 –
- 1. Oracle嵌套表作爲Mybatis存儲過程的輸入參數
- 2. Oracle存儲過程的輸入參數
- 3. 將一組html輸入作爲參數傳遞給Oracle過程
- 4. 以表格作爲輸入參數的Oracle函數
- 5. Oracle ROWID作爲函數/過程參數
- 6. 如何將Java List轉換爲Oracle ARRAY以在Oracle存儲過程中作爲參數輸入?
- 7. 將一組數據作爲輸入參數傳遞給Oracle過程
- 8. Oracle VARCHAR限制作爲過程輸出參數
- 9. 在Oracle,PL/SQL中使用INOUT參數的過程示例
- 10. 插入存儲過程輸出值作爲在Oracle數據庫
- 11. AzureML:以參數作爲輸入
- 12. 發送一個DataTable作爲存儲過程的參數
- 13. 使用oracle存儲過程檢查輸入參數的空值
- 14. 使用數組寫入過程作爲輸出參數
- 15. 選擇列值作爲過程的輸入參數
- 16. Oracle函數以table_name和date作爲輸入,數字作爲輸出
- 17. 使用一個參數執行存儲過程作爲輸入
- 18. 通輸入參數作爲列名在存儲過程中
- 19. JSF DataTable過濾器示例
- 20. 更改過程輸入輸出參數
- 21. Oracle過程參數定義爲.NUMBER,是否可以將它作爲.INTEGER
- 22. 傳遞日期作爲存儲過程中的參數(oracle)
- 23. 基於輸入參數的過程
- 24. 以記錄的形式調用Oracle存儲過程作爲參數
- 25. 在Oracle過程參數
- 26. 獲取輸入參數以查詢Oracle數據庫的Web API
- 27. 以ref cursor作爲Java程序的輸入調用Oracle DB函數
- 28. 表中的數據作爲sql server中存儲過程的輸入參數集
- 29. 爲什麼通過值調用示例不能修改輸入參數?
- 30. 使用輸入和輸出參數從PHP調用Oracle存儲過程
嗨a1ex07感謝您的答覆,實際上我不得不使用插入查詢插入整個表數據到數據庫,然後如何編寫存儲過程。任何樣品plz發佈。 –
@Sreedhar goud:檢查示例。 – a1ex07