Posted by Alex Gorbachev on Jun 4, 2009
Just got an interesting note on Twitter that you can’t call a stored procedure dynamically in Oracle from a PL/SQL block like passing the procedure name in a variable.
Well, yes we can!
And the answer is EXECUTE IMMEDIATE — it can be used to run anonymous PL/SQL blog and not just a SQL statement. However, you will want to think many many times before doing so… if you love your data.
Let’s create the test procedures:
SQL> create or replace procedure bingo as
2 begin
3 dbms_output.put_line('Bingo!');
4 end;
5 /
Procedure created.
SQL> create or replace procedure bambam as
2 begin
3 dbms_output.put_line('BAM BAM!');
4 end;
5 /
Procedure created.
Now let’s create a wrapper that we will call passing a procedure name: Read the rest of this entry . . .
Posted by Sheeri Cabral on Mar 26, 2008
While doing a standard audit for a new client, I recommended a few changes to get better performance. Because I had several changes, I used the documentation at
http://dev.mysql.com/doc/refman/5.0/en/server-system-variables.html
and found that innodb_flush_log_at_trx_commit is a dynamic variable. I was surprised, because most operations dealing with file sizes and operations are not dynamic. But the client proceeded with:
set global innodb_flush_log_at_trx_commit = 2;
and got:
ERROR 1193 (HY000): Unknown system variable 'innodb_flush_log_at_trx_commit'
So I searched for others who may have had the same error, and ended up getting an unintentional googlewhack. Well, it’s not a real Googlewhack, because it has more than 2 words and I used quotes to surround it — but I was pretty surprised that there were not a lot more people like me who trusted the manual. Granted, it’s “intuitive” that the variable is one that would need a restart….but because I was looking up others, I just looked up all of them, and thus fell into the trap.
The search I did was “Unknown system variable innodb_flush_log_at_trx_commit”
And the bug I filed is http://bugs.mysql.com/bug.php?id=35575.