我正在处理一个从多个表中选择一些数据的存储过程。有些表还没有准备好从中提取数据,所以我认为我可以使用coalesce并将一些参数传递给存储过程,从哪里获取数据并基本上使用null直到数据为止准备好了。
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.0/jquery.min.js"></script>
<script src="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js"></script>
</head>
<body>
<div class="container">
<h2>Accordion Example</h2>
<p><strong>Note:</strong> The <strong>data-parent</strong> attribute makes sure that all collapsible elements under the specified parent will be closed when one of the collapsible item is shown.</p>
<div class="panel-group" id="accordion">
<div class="panel panel-default">
<div class="panel-heading">
<h4 class="panel-title">
<a data-toggle="collapse" data-parent="#accordion" href="#collapse1">Collapsible Group 1</a>
</h4>
</div>
<div id="collapse1" class="panel-collapse collapse in">
<div class="panel-body">Lorem ipsum dolor sit amet, consectetur adipisicing elit,
sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam,
quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.</div>
</div>
</div>
<div class="panel panel-default">
<div class="panel-heading">
<h4 class="panel-title">
<a data-toggle="collapse" data-parent="#accordion" href="#collapse2">Collapsible Group 2</a>
</h4>
</div>
<div id="collapse2" class="panel-collapse collapse">
<div class="panel-body">Lorem ipsum dolor sit amet, consectetur adipisicing elit,
sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam,
quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.</div>
</div>
</div>
<div class="panel panel-default">
<div class="panel-heading">
<h4 class="panel-title">
<a data-toggle="collapse" data-parent="#accordion" href="#collapse3">Collapsible Group 3</a>
</h4>
</div>
<div id="collapse3" class="panel-collapse collapse">
<div class="panel-body">Lorem ipsum dolor sit amet, consectetur adipisicing elit,
sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam,
quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.</div>
</div>
</div>
</div>
</div>
</body>
</html>
以下是存储过程的简化版本。有没有办法让这个工作?
当我尝试编译存储过程时,我得到错误(37,4):PL / SQL:SQL语句被忽略。
更新
我忘了提及我在联接中使用别名让我认为问题可能实际上是第二个coalesce参数而不是我传入的变量。我注意到了一个警告2个别名说'新&#39;与连接图的其余部分断开连接
PROCEDURE SP (frst_name VARCHAR2 default null)
AS
BEGIN
SELECT
coalesce(frst_name, oldTable.frst_name)
FROM
oldTable left join newTable on oldTable.Id = newTable.Id
END SP;
我已经通过将frst_name变量切换为null并仍然得到相同的错误来确认这一点你们有没有想到发生了什么?
解决
谢谢大家,但是我犯了一个愚蠢的错误,我使用不同的数据库用户存储过程,我没有设置同义词或授予访问用户-_-吸取的教训!
答案 0 :(得分:0)
你没有使用into,这在PL SQL选择中是不允许的....你也可以更好地使用NVL或解码进行这样简单的测试.... coalesce主要用于seledcting第一个非null值,
任何方式......这是正确的语法:
create or replace PROCEDURE sp(frst_name VARCHAR2 default null)
AS
v number;
BEGIN
SELECT
coalesce(oldTable.frst_name,frst_name)
into v
FROM
oldTable left join newTable
on oldTable.ID = newTable.ID;
END sp;
也使用SQL开发人员获取更多声明性错误消息,它是免费的!