Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

съхранена процедура с параметри със заместващи символи

Опитахте ли да го стартирате отново? Подозирам, че извикването на exec сега е част от тялото на вашата процедура. Какво ще кажете за:

ALTER PROCEDURE dbo.wildcard_name
  @userName NVARCHAR(8) = '%'
AS
BEGIN
  SET NOCOUNT ON;

  SELECT userId, userName
    FROM dbo.user
    WHERE userName LIKE @userName;
END
GO -- <-- this is important! It tells SSMS that your procedure has ended!

EXEC dbo.wildcard_name N'n%';

Куп други предложения, които би било небрежно да не спомена:

  • Винаги трябва да указвате префикса на схемата, когато създавате и извиквате обекти. Така че CREATE PROCEDURE dbo.wildcard_name , EXEC dbo.wildcard_name и т.н.
  • Надяваме се, че производственият ви код не използва SELECT * .
  • Силно препоръчваме да използвате nvarchar вместо nchar за вашия параметър.
  • Обвийте тялото на вашата процедура с BEGIN / END и не се страхувайте да използвате отстъп, за да го направите много по-четлив.
  • Обикновено ще искате да използвате SET NOCOUNT ON; за предотвратяване на n row(s) affected съобщения от намеса във вашите резултати.
  • NVARCHAR параметрите трябва да имат префикс N (въпреки че съм объркан защо редувате varchar и nchar на първо място - това са две смени, където бих очаквал нула).
  • В зависимост от сортирането (и дали искате търсенето да е чувствително към главни и малки букви), може да се наложи да промените вашата клауза where с помощта на COLLATE клауза.

РЕДАКТИРАНЕ това изглежда работи добре за мен, така че, моля, обяснете какво правите по различен начин (и "не работи" все още ли означава празен резултат или нещо друго?):




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Какво не е наред с това изчисление на разделяне на заявка на SQL Server?

  2. Заявка, за да получите само числа от низ

  3. Намерете sql записи, съдържащи подобни низове

  4. Избор и конфигуриране на хардуер за SQL Server 2016 Standard Edition

  5. Полето на SQL Server се съкращава