How To Use Dynamic Sql in Sql Server ?
How To Use Dynamic Sql in Sql Server ?
¶¯Ì¬SQL ÔÚsql server ProcedureÖеÄÓ¦ÓÃ
Create PROCEDURE [dbo].[Proc_Get_Serial_No]
(
@Table_Name varchar(20),
@No_File varchar(20)
)
AS
Declare @Serial_No int
Begin
Declare @Sql nvarchar(max)
Set @Sql ='select @Serial_No= isnull(Max('+@No_File+'),0)+1 from '+@Table_Name+''
Execute sp_executesql @Sql,
N'@Serial_No int output',
@Serial_No output
print @Serial_No
End
---Result---
Serial_No
-----------
1
×¢Ò⣺¶ÔÓÚIntput µÄ²ÎÊýÐèÒªÓà '+@parameter+'
¶ÔÓÚoutput µÄ²ÎÊýÔòÐèÒªÔÚ Ö´Ðж¯Ì¬sql µÄʱ¼äÒÔ¶¨Òå²ÎÊýµÄÐÎʽ˵Ã÷¡£
ÈçÉÏÃæµÄ£º N'@Serial_No int output'£¬È»ºó²ÅÊDzÎÊýÊä³ö,Èç @Serial_No output
--If Your want to output more the one value, your can reference the sql section as below¡£
Note: The Output Parameter Define.
Create PROCEDURE [dbo].[Proc_Get_Serial_No]
(
@Table_Name varchar(20),
@No_File varchar(20)
&n
Ïà¹ØÎĵµ£º
ÊÂÎñÈÕÖ¾ÀïÃæ“²Ø”ןܶàÓÐÓõÄÐÅÏ¢¡£ËäÈ»SQL Server±¾Éí²¢Ã»ÓÐÌṩ·ÖÎö¹¤¾ß£¬µ«ÊÇÎÒÃÇ¿ÉÒÔʹÓõÚÈý·½¹¤¾ßÀ´Ò»Ì½¾¿¾¹¡£
Red GateÈí¼þÌṩÁËÒ»¿î½Ð×öSQL Log RescueµÄÃâ·Ñ¹¤¾ß£¬µ«ÊÇÖ»Ö§³ÖSQL Server 2000¡£ApexSQLºÍLumigent¹«Ë¾ÌṩµÄÁ½¿îÈí¼þ·Ö±ð½Ð×öApexSQL LogºÍLog Explorer£¬ËüÃÇÖ§³ÖSQL Server7¡¢2000ºÍ ......
1¡¢°´Ê±¼äÅÅÐò
select * from tbl_lms_loginhistory order by loginhistory_logintime desc
2¡¢
ÔÚÒ»¸öÊý¾Ý¿âÖÐÊÇÏÂÁеÄÑù×Ó
³µ´Î Éí·ÝÖ¤ºÅ
27 1
27 2
45 1
25 1
45 2
ÏÖÔÚÎÒÏë »ñµÃµÄÊÇ
³µ´Î ³Ë×ø´ÎÊý
25 1
27 3
45 2
ÇëÎÊ£¬ÎÒµÄSQLÓï¾ä¸ÃÔõôд£¿
select ³µ´ ......
1 ²éѯsqlÓÅ»¯
1.1 Ñ¡Ôñ×îÓÐЧÂʵıíÃû˳Ðò£¨Ö»ÔÚ»ùÓÚ¹æÔòµÄÓÅ»¯Æ÷ÖÐÓÐЧORACLE£©
½âÎöÆ÷°´ÕÕ´ÓÓÒµ½×óµÄ˳Ðò´¦Àífrom×Ó¾äÖеıíÃû£¬Òò´Ëfrom×Ó¾äÖÐдÔÚ×îºóµÄ±í£¨»ù´¡±ídriving table£©½«±»×îÏÈ´¦Àí¡£ÔÚfrom×Ó¾äÖаüº¬¶à¸ö±íµÄÇé¿öÏ£¬Äã±ØÐëÑ¡Ôñ¼Ç¼ÌõÊý×îÉٵıí ......
ÔÚ´æ´¢¹ý³ÌÖÐʹÓÃÊÂÎñ£¬ÒÔÏÂΪģ°å£º
CREATE PROCEDURE testPro
AS
/**//* ------- ÊÂÎñ¿ªÊ¼---------- */
BEGIN TRANSACTION tran_test
/**//* -------- ±£´æÊÂÎñ----------*/
SAVE TRANSACTION tran_test
/**//* -------- Êý¾Ý²Ù×÷---------*/
INSERT [table1] ( [content] ) VALUES ( '43332' )
/**//*---- ......
ÎÊÌâµÄÌá³ö£º
ÏÖÓбíA£¬ÄÚÈÝÈçÏ£º
±àÂë ²Ö¿â ÊýÁ¿
01 A 6
01 B 7
02 A & ......