每个人,我都有一个oracle 11g数据库,我想创建一个存储过程,该存储过程在某些视图和表之间返回一个select语句,如下所示:
CREATE OR REPLACE PROCEDURE schemaName.my_PROC_name (p1 in number(10))
as
begin
select v.*,(select column1 from table t where t.id=p1) from view v ;
end my_PROC_name ;
并且它不起作用,我对oracle DB不熟悉,因此请帮忙!
答案 0 :(得分:0)
$name=$_SESSION['name'];
$m = new MongoClient();
//echo "Connection to database successfully <br>";
$db = $m->SAHC;
//echo "Database mydb selected <br>";
$collection = $db->upload_files;
//echo "Collection selected successfully <br>";
$document = array("usrName"=>$name);
$cursor=$collection->find($document);
session_start();
// iterate cursor to display title of documents
echo "<table width='auto' style='border-collapse: separate;
border-spacing: 20px' ><tr>";
foreach ($cursor as $document) {
echo "<td >";
$value=$document["fileName"];
$value2=$document["uploadSize"];
$_SESSION['rootFolder']=$value;
echo '<input type="image" src="images/file2.png" value="'.$value2.'" class="btTxt submit" width="85" onclick="myfunc(this.value)"><b>'.$value . "</b>";
echo "</td>";
}
echo "</tr></table>";
?>
错误。single subquery returns more than one row
替换为p1 in number(10)
)p1 number
和view
是保留关键字,不允许将它们
在创建它们时使用。table
子句,而into
类型
需要参数才能将其从此类编程中删除
单位out
(默认值)进行变量声明,并使用以下过程
in
子句之后的名称是多余的。要指定元素类型,请使用end
尽可能多地提供变量或数据库列的数据类型,而不是指定独立的数据类型。因此,您的情况可能考虑以下代码块:
%TYPE
,您可以按以下方式执行该过程
CREATE OR REPLACE PROCEDURE my_PROC_name(
i_p1 NUMBER,
o_col0 OUT myview.col0%type,
o_col1 OUT mytable.column1%type
) AS
BEGIN
SELECT v.col0, t.column1
INTO o_col0, o_col1
FROM myview v
LEFT JOIN mytable t
ON v.id = t.v_id
WHERE t.id = i_p1;
EXCEPTION WHEN no_data_found THEN null;
WHEN too_many_rows THEN null;
END;
/