begin insert data into table select scope_identity() as userid end
Ok, sure. I can see where this would not work in every available dbms. There may be a slight syntax difference or, like Oracle, it could use an entirely different way of generating identity values and returning them to the caller. However...
recordset.open( "insert data into table" ) ... recordset.open( "select @@identity" )
...will suffer from the exact same problem! Only now, instead of being centrally located in one known place where we can easily find it and work on it -- it is scattered around who knows how many places (and who the hell is going to know?) around the app(s) code.
Stored procedures, besides all the other advantages they provide (security not being the least of them), allow us the opportunity to locate as much dbms-specific code in one central location. This is precisely what you want if you ever attempt to port the code.
If your supervisor is indeed worried about having to port your app to a different dbms, then he has taken the exact wrong step and will be making the problem worse. Talk him out of this lunacy if you can.
TommCatt -- In theory, there is no difference between theory and practice. In practice, there is.