如何修复此 SELECT 语句中的错误 INTO 子句
Posted
技术标签:
【中文标题】如何修复此 SELECT 语句中的错误 INTO 子句【英文标题】:How to fix error INTO clause is expected in this SELECT statement 【发布时间】:2016-01-03 12:24:54 【问题描述】:我是 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);
请给我线索。谢谢
【问题讨论】:
【参考方案1】:您好,不确定来自 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;
【讨论】:
以上是关于如何修复此 SELECT 语句中的错误 INTO 子句的主要内容,如果未能解决你的问题,请参考以下文章
错误 PLS-00428:此 SELECT 语句中应有一个 INTO 子句
oracle的存储过程中,使用select into 语句的错误