这是我正在尝试做的一个非常简化的示例。考虑这张人表:
CREATE TABLE people (pid SERIAL PRIMARY KEY, firstname TEXT, isalive BOOLEAN);
INSERT INTO people (firstname, isalive) VALUES
('Sam', TRUE),
('Leslie', FALSE),
('Parker', FALSE);
Run Code Online (Sandbox Code Playgroud)
现在我想从表中删除死人。当我在 中执行此操作时psql,我看到一条消息,告诉我删除了多少行。
postgres=> DELETE FROM people WHERE isalive = FALSE;
DELETE 2
postgres=>
Run Code Online (Sandbox Code Playgroud)
但是,如果我将此 delete 语句放入函数并调用它,则不会看到相同的消息。
CREATE OR REPLACE FUNCTION deletedead() RETURNS void AS $$
DELETE FROM people WHERE isalive = FALSE;
$$ LANGUAGE SQL;
SELECT deletedead();
Run Code Online (Sandbox Code Playgroud)
这会按预期删除行,但不会给出任何消息说明删除了多少行。我如何从这个函数中得到像“DELETE 2”这样的消息?
我尝试修改我的函数以返回删除的行数:
-- This doesn't work
CREATE OR REPLACE FUNCTION deletedead() RETURNS int AS $$ …Run Code Online (Sandbox Code Playgroud) 我正在创建一个包含多个子图并将其保存到文件的图形.像这样:
fig = figure;
ax1 = subplot(2, 1, 1);
ax2 = subplot(2, 1, 2);
ylabel(ax1, 'First');
ylabel(ax2, 'Second');
savefig('myfigure.fig')
Run Code Online (Sandbox Code Playgroud)
后来,我想将一个子图复制到一个新图,而不重新运行创建图的代码.我当前的方法是加载保存的图形,找到我想要通过其YLabel复制的轴,然后将其复制到新图形:
newfig = figure;
oldfig = openfig('myfigure.fig');
ylabel_obj = findobj(oldfig, 'String', 'First'); % This is not givng me what I expect
old_axes_obj = ylabel_obj.Parent;
new_axes_obj = copyobj(old_axes_obj, newfig);
Run Code Online (Sandbox Code Playgroud)
问题是findobj上面没有找到YLabel.它只返回一个0x0空的GraphicsPlaceholder数组.为什么findobj找不到我的YLabel?有没有更好的方法来找到我想要的轴?