我必须显示团队中具有相同经理的每个人的名字和姓氏(他的名字和姓氏取自参数)。
我在VARCHAR2之前尝试了“ IN”。我确实使用了set serveroutput。 此外,分别从光标中选择是可行的。
from PyQt5 import QtCore, QtGui, QtWidgets
class Circle(QtWidgets.QWidget):
def __init__(self, parent=None):
super(Circle, self).__init__(parent)
self.resize(250,500)
self.setWindowTitle("Bounce-Man")
self.color = QtGui.QColor(QtCore.Qt.red)
self.rect_circle = QtCore.QRect(0, 0, 50, 50)
self.rect_circle.moveCenter(QtCore.QPoint(self.width()/2, self.rect_circle.height()/2))
self.step = QtCore.QPoint(0, 5)
self.y_direction = 1
timer = QtCore.QTimer(self, interval=30)
timer.timeout.connect(self.update_position)
timer.start()
def paintEvent(self,event):
bouncer = QtGui.QPainter(self)
bouncer.setPen(QtCore.Qt.black)
bouncer.setBrush(self.color)
bouncer.drawEllipse(self.rect_circle)
@QtCore.pyqtSlot()
def update_position(self):
if self.rect_circle.bottom() > self.height() and self.y_direction == 1:
self.y_direction = -1
if self.rect_circle.top() < 0 and self.y_direction == -1:
self.y_direction = 1
self.rect_circle.translate(self.step * self.y_direction)
self.update()
if __name__ == "__main__":
import sys
window = QtWidgets.QApplication(sys.argv)
app = Circle()
app.show()
sys.exit( window.exec_() )
我不知道为什么没有参数会起作用,但是如果我添加了这些参数,则光标为空并且不显示任何内容。
答案 0 :(得分:1)
谁知道?该过程本身看起来还不错(除了您打开TEAM游标并从ZESPOL(从未声明过)中获取该事实之外。
imi VARCHAR2, nazw VARCHAR2
)下面是一个测试案例,说明如果正确使用它,它会正常工作。请注意,我已经切换到游标FOR循环,这更易于维护。
SQL> create table people
2 (id_ppl number,
3 name varchar2(10),
4 surname varchar2(10),
5 id_manager number);
Table created.
SQL> insert all
2 into people values (1, 'Little', 'Foot', 1) --> the same ...
3 into people values (2, 'Big' , 'Foot', 1) --> ... manager
4 into people values (3, 'Stack' , 'Over', 2)
5 select * from dual;
3 rows created.
SQL> set serveroutput on;
过程:
SQL> create or replace procedure ex_2h (p_nazw in varchar2, p_imi in varchar2)
2 is
3 begin
4 for tmp in (select p.name from people p
5 where p.id_manager = (select p1.id_ppl
6 from people p1
7 where p1.name = p_imi
8 and p1.surname = p_nazw
9 )
10 )
11 loop
12 dbms_output.put_line(nvl(tmp.name, '?'));
13 end loop;
14 end;
15 /
Procedure created.
测试:
SQL> exec ex_2h('Foot', 'Little');
Little
Big
PL/SQL procedure successfully completed.
SQL>
我建议您尝试这种方式。如果它不起作用,请发布更多信息-CREATE TABLE和示例数据,以便我们可以看到您真正拥有的内容以及Oracle的响应方式(以及原因)。