Я новичок в PL / SQL и XML. Я хочу получить данные в виде формата XML из таблицы, вызвав функцию определения пользователя:
Это таблица sql:
CREATE TABLE "HIMADRI"."PAYROLLFILE"( "SALYR" NUMBER(4,0) NOT NULL ENABLE,
"SALMT" NUMBER(2,0) NOT NULL ENABLE,
"EMPID" NUMBER NOT NULL ENABLE,
"DPTID" NUMBER NOT NULL ENABLE,
"SALHD" VARCHAR2(2 BYTE) NOT NULL ENABLE,
"DESCR" VARCHAR2(50 BYTE) NOT NULL ENABLE,
"ALAMT" FLOAT(126) NOT NULL ENABLE,
"OPID" NUMBER NOT NULL ENABLE,
"TRADT" DATE);
Я хочу получить данные в следующем формате XML:
<transaction>
<salary_year>SALYR</salary_year>
<salary_month>SALMT</salary_month>
<employee_id>EMPID</employee_id>
<department_code>DPTID</department_code>
<salary_head>SALHD</salary_head>
<description>DESCR</description>
<amount>ALAMT</amount>
<operator_id>OPID</operator_id>
<transaction_date>TRADT</transaction_date>
</transaction>
Как мне написать тело функции pl / sql:
FUNCTION get_all_payroll_transactions RETURN VARCHAR2 IS isSuccess VARCHAR2(50);
BEGIN
SELECT XMLElement( "transaction",
XMLElement("salary_year", SALYR),
XMLElement("salary_month", SALMT),
XMLElement("employee_id", EMPID),
XMLElement("department_code", DPTID),
XMLElement("salary_head", SALHD),
XMLElement("description", DESCR),
XMLElement("amount", ALAMT),
XMLElement("operator_id", OPID),
XMLElement("transaction_date", TRADT)
)AS transaction1
FROM PAYROLLFILE ;
END get_all_payroll_transactions;
Как мне вызвать функцию из php:
$stid = oci_parse($conn, " begin
:result := PAYROLL.get_all_payroll_transactions();
end;" );
oci_bind_by_name($stid, ':result',$ru, 500);
oci_execute($stid);
Пожалуйста, дайте мне подсказку. Спасибо
Привет не уверен насчет вызова из PHP, но когда вы делаете выбор в блоке plsql, вам нужно выберите его в переменную так что в этом случае это будет выглядеть примерно так: Вам также необходимо явно вернуть эту переменную. Также, когда вы выбираете XML, вам понадобится существенно большая переменная, чем VARCHAR2 (50). Ниже не проверено, но дает вам представление о том, как двигаться дальше.
FUNCTION get_all_payroll_transactions RETURN VARCHAR2 IS
isSuccess VARCHAR2(4000);
BEGIN
SELECT XMLElement( "transaction",
XMLElement("salary_year", SALYR),
XMLElement("salary_month", SALMT),
XMLElement("employee_id", EMPID),
XMLElement("department_code", DPTID),
XMLElement("salary_head", SALHD),
XMLElement("description", DESCR),
XMLElement("amount", ALAMT),
XMLElement("operator_id", OPID),
XMLElement("transaction_date", TRADT)
)AS transaction1
into isSuccess
FROM PAYROLLFILE ;
Return isSuccess;
END get_all_payroll_transactions;
Других решений пока нет …