�����ڵ�λ�ã� ������ >> ������ >> WEB������ >> ����

SQL SERVER ����ι���ִ�ж�̬SQL���

���ߣ����� ��Դ���������� ����ʱ�䣺2017-7-24
�����

 1 :��ͨSQL��������execִ��

Select * from tableName 
exec('select * from tableName') 
exec sp_executesql N'select * from tableName' -- ��ע���ַ���ǰһ��Ҫ��N 

2:�ֶ��������������ݿ���֮����Ϊ����ʱ�������ö�̬SQL

declare @fname varchar(20) 
set @fname = 'FiledName' 
--Select @fname from tableName -- ����,������ʾ���󣬵����Ϊ�̶�ֵFiledName,������Ҫ�� 
exec('select ' + @fname + ' from tableName') -- ��ע�� �Ӻ�ǰ��� �����ŵı��ϼӿո� 

--��Ȼ���ַ����ijɱ�������ʽҲ�� 
declare @fname varchar(20) 
set @fname = 'FiledName' --�����ֶ��� 

declare @s varchar(1000) 
set @s = 'select ' + @fname + ' from tableName' 
exec(@s) -- �ɹ� 
--exec sp_executesql @s -- �˾�ᱨ�� 

declare @s Nvarchar(1000) -- ע��˴���Ϊnvarchar(1000) (����Ϊntext��nchar��nvarchar���ͣ�������varchar����)

set @s = 'select ' + @fname + ' from tableName' 
exec(@s) -- �ɹ� 
exec sp_executesql @s -- �˾���ȷ

3. ������������

--(1)�������:
     declare @QueryString nvarchar(1000) --��̬��ѯ������(ע������Ϊntext��nchar��nvarchar���ͣ�������varchar����)
     declare @paramstring nvarchar(200) --���ö�̬����еIJ������ַ���(ע������Ϊntext��nchar��nvarchar���ͣ�������varchar����)
     declare @input_id int--�����贫�붯̬���IJ�����ֵ

     set @QueryString='select * from tablename where id=@id' --idΪ�ֶ�����@idΪҪ����IJ���
     set @paramstring='@id int' --���ö�̬����в����Ķ�����ַ���
     set @input_id =1 --�����贫�붯̬���IJ�����ֵΪ1
     exec sp_executesql @querystring,@paramstring,@id=@input_id����
     --��������:
     declare @QueryString nvarchar(1000) --��̬��ѯ������(ע������Ϊntext��nchar��nvarchar���ͣ�������varchar����)
     declare @paramstring nvarchar(200) --���ö�̬����еIJ������ַ���(ע������Ϊntext��nchar��nvarchar���ͣ�������varchar����)
     declare @input_id int--�����贫�붯̬���IJ�����ֵ,����1
     declare @input_name varchar(20)--�����贫�붯̬���IJ�����ֵ,����2

     set @QueryString='select * from tablename where id=@id and name=@name'  --id��nameΪ�ֶ�����@id��@nameΪҪ����IJ���
     set @paramstring='@id int,@name varchar(20)' --���ö�̬����в����Ķ�����ַ���,���������","���
     set @input_id =1 --�����贫�붯̬���IJ�����ֵΪ1
     set @input_name='����'  --�����贫�붯̬���IJ�����ֵΪ"����"
     exec sp_executesql @querystring,@paramstring,@id=@input_id,@name=@input_name��--��ע�������˳��
   --(2)�������
       declare @num int, @sqls nvarchar(4000) 
      set @sqls='select count(*) from tableName' 
      exec(@sqls) 
    --��ν�execִ�н����������У�     
    declare @QueryString nvarchar(1000) --��̬��ѯ��������(ע������Ϊntext��nchar��nvarchar���ͣ�������varchar����)
    declare @paramstring nvarchar(200) --���ö�̬����еIJ������ַ���(ע������Ϊntext��nchar��nvarchar���ͣ�������varchar����)
    declare @output_result int--��ѯ�������@output_result 

    set @QueryString='select @totalcount=count(*) from tablename' --@totalcount������������
    set @paramstring='@totalcount int output' --���ö�̬����в����Ķ�����ַ���,���������","���
    exec sp_executesql @querystring,@paramstring,@totalcount=@output_result output
    select @output_result
    --��Ȼ�������������������һ��ʹ�ã���ҿ����Լ�ȥ��һ�ԡ�
    --���⣬��̬����ѯ�Ľ����Ҫ����Ļ�����ֻ�뵽��������ʱ��ķ�������֪��λ��û�и��õķ���.
    IF object_id('[tempdb].[dbo].#tmp') IS NOT NULL --�ж���ʱ��#tmp�Ƿ����,������ɾ��
      drop table #tmp
    select * into #tmp from tablename where 1=2 --������ʱ��#tmp,��ṹ��tablename��ͬ

    declare @QueryString nvarchar(1000) --��̬��ѯ��������(ע������Ϊntext��nchar��nvarchar���ͣ�������varchar����)
    set @QueryString='select * from tablename '
    insert into #tmp(field1,field2,) exec(@querystirng)

��Щ����ԭ��������Ҫ��SQL�����ߴ洢�����ж�̬����SQL��䣬Ȼ����SQL����洢�����ж�̬��ִ�С�

���΢���ṩ������������һ����ʹ��

Execute����

ִ�з�ʽΪ

Execute(@sql)����ִ̬��һ��SQL��䣬���������SQL����޷��õ�����ķ��ؽ����������������һ�ַ���

ʹ�ô洢���� sp_ExecuteSql

ʹ�øô洢���̣���ɽ���̬����еIJ�����������

����

declare @sql nvarchar(800),@dd varchar(20)
set @sql='set @mm=''�����ַ���'''
exec sp_executesql @sql,N'@mm varchar(20) output',@dd output
select @dd 

ִ�����ͻὫ�ڲ�������SQL����ij��������ֵ���ص��ⲿ�����ߡ�

��Ҫ��Դ�ڹ����е�һ��żȻ��Ҫ��

create proc proc_InToServer @�շ�վ���� varchar(4),@������ tinyint,@����ʱ�� varchar(23),@UID char(16),
@���� varchar(12),@���� char(1),@ʶ���ƺ� varchar(12),@ʶ���� char(1),@�շѽ�� money,@����״̬ char(1),
@��ͼ�� bit,@�뿪ʱ�� varchar(23),@�ٶ� float,@HasInsert int output
as
begin
  declare @inTime datetime,@TableName varchar(255),@leaveTime datetime,@HasTable bit,@Sql nvarchar(4000)
 select @intime=Convert(datetime,@����ʱ��),@leaveTime=Convert(datetime,@�뿪ʱ��)
 set @TableName='ETC03_01_OBEԭʼ������¼��_'+dbo.formatDatetime(@intime,'YYYYMMDD')

 select @HasTable=(Case when Count(*)>0 then 1 else 0 end) from sysobjects where id=Object_id(@TableName) and ObjectProperty(id,'IsUserTable')=1
 if @HasTable=0
 begin
  set @Sql='CREATE TABLE [dbo].['+@TableName+'] (
 [�շ�վ����] [char] (4) COLLATE Chinese_PRC_CI_AS NOT NULL,
 [������] [tinyint] NOT NULL,
 [����ʱ��] [datetime] NOT NULL,
 [UID] [char] (16) COLLATE Chinese_PRC_CI_AS NOT NULL,
 [����] [varchar] (12) COLLATE Chinese_PRC_CI_AS NULL ,
 [����] [char] (1) COLLATE Chinese_PRC_CI_AS NULL ,
 [ʶ���ƺ�] [varchar] (12) COLLATE Chinese_PRC_CI_AS NULL ,
 [ʶ����] [char] (1) COLLATE Chinese_PRC_CI_AS NULL ,
 [�շѽ��] [money] NULL ,
 [����״̬] [char] (1) COLLATE Chinese_PRC_CI_AS NULL ,
 [��ͼ��] [bit] NOT NULL ,
 [�뿪ʱ��] [datetime] NULL ,
 [�ٶ�] [float] NULL,
    Constraint'+' PK_'+@TableName+' primary key(�շ�վ����,������,����ʱ��,UID)
    ) ON [PRIMARY]'
   Execute(@Sql)
  end 
  set @sql = 'select @Cnt=count(*) from '+@TableName+ ' where �շ�վ����='''+@�շ�վ����+''' and ������='+cast(@������ as varchar(4))+' and ����ʱ��='''+@����ʱ��+''' and UID='''+@UID+''''
  set @sql = @sql + ' if @Cnt=0 '
  
  set @sql=@sql+'insert '+@TableName+' values('''+@�շ�վ����+''','+cast(@������ as varchar(4))+','''+@����ʱ��+''','''+@Uid+''','''+@����+  
  ''','''+@����+''','''+  @ʶ���ƺ�+''','''+@ʶ����+''','+Cast(@�շѽ�� as varchar(8))+','''+@����״̬+''','+cast(@��ͼ�� as varchar(1))+
  ','''+@�뿪ʱ��+''','+Cast(@�ٶ� as varchar(8))+')'
  --Execute(@sql) 
  exec sp_executesql @sql,N'@Cnt int output',@HasInsert output
end
ת����ע��:������(лл����)
�������ۣ�