sql >> Databáze >  >> RDS >> Sqlserver

EF4 - Vybraná uložená procedura nevrací žádné sloupce

EF nepodporuje import uložených procedur, které sestavují sadu výsledků z:

  • Dynamické dotazy
  • Dočasné stoly

Důvodem je, že pro import procedury musí ji EF provést . Taková operace může být nebezpečná, protože může vyvolat některé změny v databázi. Z tohoto důvodu EF používá speciální SQL příkaz před provedením uložené procedury:

SET FMTONLY ON

Spuštěním tohoto příkazu uložená procedura vrátí pouze "metadata" o sloupcích ve své výsledné sadě a neprovede svou logiku. Ale protože logika nebyla provedena, neexistuje žádná dočasná tabulka (nebo vytvořený dynamický dotaz), takže metadata neobsahují nic.

Máte dvě možnosti (kromě té, která vyžaduje přepsání uložené procedury, abyste tyto funkce nepoužívali):

  • Definujte vrácený komplexní typ ručně (myslím, že by to mělo fungovat)
  • Použijte hack a pouze pro přidání uložené procedury vložte na její začátek SET FMTONLY OFF . To umožní, aby zbytek kódu vašeho SP běžel běžným způsobem. Jen se ujistěte, že váš poskytovatel služeb nemění žádná data, protože tyto úpravy budou provedeny během importu! Po úspěšném importu tento hack odstraňte.


  1. Jak vložit znak utf-8 mb4 (emoji v ios5) do mysql?

  2. Jak odstranit databázi v cPanel

  3. Vytvořte HTML tabulku pomocí SQL FOR XML

  4. Jak nahradit část řetězce v SQL