SQL Server:存储过程中的动态查询

用户名

我试图在SQL Server中编写动态查询。但是我得到如下警告

选定的存储过程或函数不返回任何列

我一直在尝试实现这一目标,但是仍然无法运行。

我在哪里想念?

ALTER PROCEDURE [dbo].[S_ProjeGetir1]
@ID          int=0,
@AktifMi     int,
@ProjeFirma  int,
@Icinde      int,
@AramaText   Varchar(500),
@Arasinda1   Varchar(50),
@Arasinda2   Varchar(50)
AS
BEGIN 
 Create Table #TempTable 
(Sonuc int   
,ID int           
,FirmaID  int
,PrismProjeID  int
,ProjeAdi  nvarchar(150)
,RgID  uniqueidentifier
,HaritaEnlem  nvarchar(25)
,HaritaBoylam  nvarchar(25)
,ProjeTeslimTarihi  datetime
,HemenTeslimMi  bit
,Adres  nvarchar(250)
,AdresUlkeID  int
,AdresILID  int
,AdresILceID  int
,AdresSemtID  int
,KonutSayisi  int
,LansmanTarihi  datetime
,OfisSayisi  int
,MagazaSayisi  int
,BlokSayisi  int
,YesilAlan  int
,KrediyeUygunMu  bit
,AktifMi  bit
,UcBoyutVarMi  bit
,UlkeAdi  nvarchar(150)
,Sehir  nvarchar(50)
,Ilce  nvarchar(50)
,Semt  nvarchar(50)
,FirmaAdi  nvarchar(100)
,StokSonGuncellemeTarihi  datetime)

   Declare @SqlText varchar(8000),
           @AktifPasif bit
   Set @AktifPasif=Case When @AktifMi=0 Then 1  When @AktifMi=1 Then 0 End
   SET NOCOUNT ON
   BEGIN TRY

        Set @SqlText='  SELECT 1 Sonuc ,[ID],[FirmaID] ,[PrismProjeID],[ProjeAdi]    ,[RgID]      ,[HaritaEnlem] ,[HaritaBoylam]  ,[ProjeTeslimTarihi]
                                       ,[HemenTeslimMi],[Adres]       ,[AdresUlkeID] ,[AdresILID] ,[AdresILceID] ,[AdresSemtID]   ,[KonutSayisi] 
                                       ,[LansmanTarihi],[OfisSayisi]  ,[MagazaSayisi],[BlokSayisi],[YesilAlan]   ,[KrediyeUygunMu],[AktifMi]  
                                       ,[UcBoyutVarMi] ,[UlkeAdi]     ,[Sehir]       ,[Ilce]      ,[Semt]
                                       ,[FirmaAdi]     ,[StokSonGuncellemeTarihi] 
                        FROM [dbo].[V_Proje] AS P WITH (NOLOCK) 
                        WHERE 1=1 '
        If @ID>0 Set --ID ye Göre İlgili Kayıdı almak için
           @SqlText=@SqlText +' and ID=' +cast(@ID as Varchar(50))
        Else
        Begin
            --Aktif ise veya Pasif ise            
            if @AktifMi=0 or @AktifMi=1
            Begin
              Set @SqlText=@SqlText +' and AktifMi='+cast(@AktifPasif as varchar(50))
            End
            --Bütün Alanları sorgulamak için
              Set @SqlText=@SqlText +' and CASE WHEN '+cast(@ProjeFirma as varchar(50))+'=1 THEN Upper(ProjeAdi)
                                                WHEN '+cast(@ProjeFirma as varchar(50))+'=0 THEN Upper(FirmaAdi)
                                                WHEN '+cast(@ProjeFirma as varchar(50))+'=2 THEN Upper(HaritaEnlem)
                                                WHEN '+cast(@ProjeFirma as varchar(50))+'=3 THEN Upper(HaritaBoylam)
                                                WHEN '+cast(@ProjeFirma as varchar(50))+'=4 THEN Upper(Adres)'  

            If @Icinde=0--İçinde                                              
              Set @SqlText=@SqlText +' END Like ''%'+@AramaText+'%''  '
            If @Icinde=1--İle Başlayan
              Set @SqlText=@SqlText +' END Like '''+@AramaText+'%''  '
            If @Icinde=2--Arasında
              Set @SqlText=@SqlText +' END between '''+ @Arasinda1+''' and '''+@Arasinda2+''''
            --select @SQLTEXT
        End
        exec('insert into #TempTable ' + @SqlText)



        Select     Sonuc, [ID],[FirmaID],[PrismProjeID],[ProjeAdi] ,[RgID]          ,[HaritaEnlem],[HaritaBoylam],[ProjeTeslimTarihi],[HemenTeslimMi]
                        ,[Adres]       ,[AdresUlkeID] ,[AdresILID],[AdresILceID]   ,[AdresSemtID],[KonutSayisi] ,[LansmanTarihi]    ,[OfisSayisi]
                        ,[MagazaSayisi],[BlokSayisi]  ,[YesilAlan],[KrediyeUygunMu],[AktifMi]    ,[UcBoyutVarMi],[UlkeAdi],[Sehir]  ,[Ilce],[Semt]
                        ,[FirmaAdi]    ,[StokSonGuncellemeTarihi] 
        From #TempTable AS T  WITH (NOLOCK) 

   END TRY
   BEGIN CATCH
       SELECT -1 AS Sonuc -- EXCEPTION
   END CATCH
   SET NOCOUNT OFF
END

任何帮助将不胜感激。

谢谢

詹尼斯·帕拉斯科沃波洛斯

我不确定我要说的内容是否适用于EF,但是在LINQ to SQL类中也有类似的情况。

  1. 备份您的存储过程的代码
  2. SELECT在存储过程中创建一个具有适当值的单个语句,如下所示:

     ALTER PROCEDURE [dbo].[S_ProjeGetir1]
         @ID          int=0,
         @AktifMi     int,
         @ProjeFirma  int,
         @Icinde      int,
         @AramaText   Varchar(500),
         @Arasinda1   Varchar(50),
         @Arasinda2   Varchar(50)
     AS
     BEGIN
    
         Select CONVERT(VARCHAR(30),'') AS Sonuc, -- Make sure to convert to what your 
                0 AS [ID],
                0 AS [FirmaID],
                0 AS [PrismProjeID],
                ...
     END
    
  3. 将此存储过程导入EF

  4. 如果一切顺利,请在存储过程中还原备份的代码。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

过程中的动态SQL查询

来自分类Dev

存储过程中的SQL查询IF语句

来自分类Dev

SQL Server存储过程中的错误

来自分类Dev

SQL Server存储过程中的IF条件

来自分类Dev

SQL Server:存储过程中的IF THEN ELSE

来自分类Dev

如何在SQL Server 2012年的存储过程中动态给表名称

来自分类Dev

在SQL Server的存储过程中解析JSON的动态变量

来自分类Dev

如何在SQL Server存储过程中创建动态参数

来自分类Dev

如何在SQL Server 2012年的存储过程中动态给表名称

来自分类Dev

在SQL Server 2012中forfor循环和插入查询的单个存储过程中回滚

来自分类Dev

将查询放入存储过程中时,SQL Server将不会返回结果

来自分类Dev

存储过程中的动态SQL无法获取所需的结果

来自分类Dev

在存储过程中的动态SQL中使用临时表

来自分类Dev

将动态SQL重写到存储过程中

来自分类Dev

在存储过程中替换动态 SQL 导致麻烦

来自分类Dev

从存储过程中的列运行SQL查询

来自分类Dev

SQL设置变量作为存储过程中查询的结果

来自分类Dev

SQL设置变量作为存储过程中查询的结果

来自分类Dev

在SQL Server中的存储过程中读取xml的问题

来自分类Dev

SQL Server中存储过程中的可选参数

来自分类Dev

在SQL Server中的存储过程中读取xml的问题

来自分类Dev

SQL Server:IF条件在存储过程中不起作用

来自分类Dev

SQL Server:存储过程中的并发问题

来自分类Dev

做 ; 表示SQL Server存储过程中的任何内容

来自分类Dev

SQL Server存储过程中的多个表类型参数

来自分类Dev

从SQL Server存储过程中检索特定数据

来自分类Dev

如何捕获SQL Server存储过程中的错误?

来自分类Dev

在SQL Server存储过程中插入@tablename

来自分类Dev

在SQL Server中的存储过程中使用循环

Related 相关文章

  1. 1

    过程中的动态SQL查询

  2. 2

    存储过程中的SQL查询IF语句

  3. 3

    SQL Server存储过程中的错误

  4. 4

    SQL Server存储过程中的IF条件

  5. 5

    SQL Server:存储过程中的IF THEN ELSE

  6. 6

    如何在SQL Server 2012年的存储过程中动态给表名称

  7. 7

    在SQL Server的存储过程中解析JSON的动态变量

  8. 8

    如何在SQL Server存储过程中创建动态参数

  9. 9

    如何在SQL Server 2012年的存储过程中动态给表名称

  10. 10

    在SQL Server 2012中forfor循环和插入查询的单个存储过程中回滚

  11. 11

    将查询放入存储过程中时,SQL Server将不会返回结果

  12. 12

    存储过程中的动态SQL无法获取所需的结果

  13. 13

    在存储过程中的动态SQL中使用临时表

  14. 14

    将动态SQL重写到存储过程中

  15. 15

    在存储过程中替换动态 SQL 导致麻烦

  16. 16

    从存储过程中的列运行SQL查询

  17. 17

    SQL设置变量作为存储过程中查询的结果

  18. 18

    SQL设置变量作为存储过程中查询的结果

  19. 19

    在SQL Server中的存储过程中读取xml的问题

  20. 20

    SQL Server中存储过程中的可选参数

  21. 21

    在SQL Server中的存储过程中读取xml的问题

  22. 22

    SQL Server:IF条件在存储过程中不起作用

  23. 23

    SQL Server:存储过程中的并发问题

  24. 24

    做 ; 表示SQL Server存储过程中的任何内容

  25. 25

    SQL Server存储过程中的多个表类型参数

  26. 26

    从SQL Server存储过程中检索特定数据

  27. 27

    如何捕获SQL Server存储过程中的错误?

  28. 28

    在SQL Server存储过程中插入@tablename

  29. 29

    在SQL Server中的存储过程中使用循环

热门标签

归档