1.Transact-SQL语句编译后还是Transact-SQL语句
2.存储过程编译后生成的代码存放在存储过程中
3.NULL与任何值运算都是NULL

解决方案 »

  1.   

    1、能看到编译后的代码吗?
    2、或者哪里有讲这方面的文章?
    3、如果使用线面的语句计算平均值,如果NULLIF返回NULL的话AVG()结果不就是NULL了吗,如何使AVG()返回‘0’?
    select AVG(NULLIF(COALESCE(this_year,last_year),0.00)) AS 'Average Budget' FROM t_sales多谢。
      

  2.   

    1、在 SQL Server 中,语句的执行包括两个阶段:编译和执行。在每次需要执行语句时执行预编译的执行计划。这将在第一次执行 SQL 语句后省去对每个执行计划重新编译 SQL 语句。 
    语句的准备和执行由 API 函数和方法控制。API 函数和方法不是 Transact-SQL 语言的一部分。用于执行 SQL 语句的准备/执行模型则由用于 SQL Server 的 Microsoft OLE DB 提供程序和 SQL Server ODBC 驱动程序支持。在请求准备时,提供程序或驱动程序将语句发送到 SQL Server 以请求准备语句。SQL Server 编译执行计划,并将该计划的句柄返回给提供程序或驱动程序。在请求执行时,提供程序或驱动程序向服务器发送请求以执行与句柄相关联的计划。2、存储过程在 master 数据库中创建并存储,强烈建议您不要创建以 sp_ 为前缀的存储过程。存储过程编译后应该放在缓冲区,机器重起后应该需要重新编译了。(个人意见和理解)。