更正:它们是否预编译取决于数据库.例如,在SQL Server中,它们不是.存储过程和参数化SQL都是在运行之前编译的.如果存在相应的执行计划,存储过程有时可以重用执行计划...但参数化SQL也是如此.
Edit: Here's what MSDN says about it:
SQL Server 2000和SQL Server 7.0版对语句处理进行了大量更改,将存储过程的许多性能优势扩展到所有SQL语句.SQL Server 2000和SQL Server 7.0在创建存储过程时不会保存部分编译的存储过程计划.与任何其他Transact-SQL语句一样,存储过程在执行时编译.SQL Server 2000和SQL Server 7.0保留过程缓存中所有SQL语句的执行计划,而不仅仅是存储过程执行计划.