Which works for items in the worksheet, but when I run a stored procedure it automatically commits.
Ok - then SHOW US output that confirms what you say above.
1. Show us what you execute in a worksheet that 'works'
2. Show us what code you execute in the stored procedure that 'automatically commits'.
As Jeff said ANY DDL that executes will perform an implicit commit before and after the ddl executes. Without seeing your code we have NO WAY of knowing what your code is doing.
I literally JUST figured this out. Thought I'd share.
Try this. Select your whole worksheet, run it with Ctrl+Enter without COMMIT at the end, and then use a separate connection to verify that it's not committed. (Or mash ROLLBACK and make sure it goes back)
Then, run the worksheet as a script with F5. Use your other connection, you'll find that it's committed! Damned button!
Has nothing to do with PL/SQL, I've just never wanted to run a whole worksheet until I started PL/SQLing