sql server中应该如何使用动态sql语句呢?下面就为您详细介绍sql server中动态sql语句的应用,希望可以让您对动态sql语句有更多的了解。

    ifexists(select*fromdbo.sysobjectswhereid=object_id(N'[dbo].[insertMdfalarmInfo]')andOBJECTPROPERTY(id,N'IsProcedure')=1) dropprocedure[dbo].[insertMdfalarmInfo] GO SETQUOTED_IDENTIFIEROFF GO SETANSI_NULLSOFF GO CREATEPROCEDUREinsertMdfalarmInfo @alarmIDint,--告警器ID @monitorEquIDvarchar(16) AS begin --droptable#table_tmp set@alarmID=38createtable#table_tmp ( [id]int ) set@monitorEquID=6 declare@selectContainerIDsqlNVARCHAR(130) set@selectContainerIDsql='selectmonitorSourceIDfromv_mdfAlarmPortInfowheremonitorEquPortin(1,3,5)andmonitorEquID=6groupbymonitorSourceID' insertinto#table_tmp([id])EXECUTEsp_executesql@selectContainerIDsql declarecountMonitorSourceIDcursorforselectidfrom#table_tmp opencountMonitorSourceID declare@monitorSourceIDint fetchnextfromcountMonitorSourceIDinto@monitorSourceID while@@fetch_status=0begin print@monitorSourceID fetchnextfromcountMonitorSourceIDinto@monitorSourceID end closecountMonitorSourceID droptable#table_tmp deallocatecountMonitorSourceID end GO SETQUOTED_IDENTIFIEROFF GO SETANSI_NULLSON GO

相信大家都比较了解select * from tablename where aa=bb的用法和exec(‘select * from tablename where aa=bb’)的用法 ,但是仍然有很多人不知道sp_executesql的用法,它可以让动态sql接收参数且把查询结果返回到一个参数

–接收条件值参数的静态sql

    declare@namevarchar(100) set@name='sysobjects' selectnamefromsysobjectswhereobject_name(id)=@name go

–接收整个条件描述的简单动态sql

    declare@wherevarchar(100) set@where='object_name(id)=''sysobjects''' exec('selectnamefromsysobjectswhere'+@where) go

–接收整个条件描述,且把查询返回到变量参数的复杂动态sql

    declare@wherenvarchar(100) set@where=N'object_name(id)=''sysobjects''' declare@retvarchar(100) declare@sqlnvarchar(1000) set@sql=N'select@ret=namefromsysobjectswhere'+@where execsp_executesql@sql,N'@retvarchar(100)output',@ret=@retoutput select@ret go

【编辑推荐】

教您如何实现MySQL动态视图

SQL动态查询的示例

为您讲解SQL动态语句的语法

DB2数据库对动态游标的使用

DB2动态SQL的查看方法