Как создать имена и имена переменных Unicode

Все это работает:

  CREATE DATABASE [¯ \ _ (ム") _ /¯];
ИДТИ
ИСПОЛЬЗОВАТЬ [¯ \ _ (ム") _ /¯];
ИДТИ
СОЗДАТЬ СХЕМА [¯ \ _ (ム") _ /¯];
ИДТИ
CREATE TABLE [¯ \ _ (ム") _ /¯]. [¯ \ _ (ãƒ") _ /¯] ([¯ \ _ (ム") _ /¯] NVARCHAR (20) );
ИДТИ
CREATE UNIQUE CLUSTERED INDEX [¯ \ _ (ム") _ /¯] ON [¯ \ _ (ãƒ") _ /¯]. [¯ \ _ (ム") _ /¯] ([ А \ _ (ム«) _ /A]);
ИДТИ
INSERT INTO [¯ \ _ (ム") _ /¯]. [¯ \ _ (ãƒ") _ /¯] ([¯ \ _ (ム") _ /¯]) ЦЕННОСТИ (N «[а \ _ (ル) _ /A] ');
ИДТИ
CREATE VIEW [¯ \ _ (ム") _ /¯]. [Vw_¯ \ _ (ãƒ") _ /¯] AS SELECT [¯ \ _ (ム") _ /¯] FROM [ ¯ \ _ (ム«) _ /а] [а \ _ (ãƒ.«) _ /A];
ИДТИ
CREATE PROC [¯ \ _ (ム") _ /¯]. [Sp_¯ \ _ (ãƒ") _ /¯] @Shrug NVARCHAR (20) AS SELECT [¯ \ _ (ム") _ /¯] FROM [¯ \ _ (ム") _ /¯]. [Vw_¯ \ _ (ãƒ") _ /¯] ГДЕ [¯ \ _ (ム") _ /¯ = = @ Shrug;
ИДТИ
EXEC [¯ \ _ (ム") _ /¯]. [¯ \ _ (ãƒ") _ /¯]. [Sp_¯ \ _ (ム") _ /¯] @Shrug = N ' [А \ _ (ム«) _ /A];
ИДТИ
 

Но вы, вероятно, можете увидеть, где я собираюсь: я не хочу @Shrug, я хочу @ ¯ \ _ (ム") _ /¯ .

Ни одна из них не работает в любой версии с 2008-2017 годов:

  CREATE PROC [¯ \ _ (ム") _ /¯]. [sp_¯ \ _ (ãƒ") _ /¯ @ @ [¯ \ _ (ム") _ / ¯] NVARCHAR (20) AS SELECT [¯ \ _ (ム") _ /¯] FROM [¯ \ _ (ãƒ") _ /¯]. [Vw_¯ \ _ (ム") _ / ¯] WHERE [¯ \ _ (ム") _ /¯] = @ [¯ \ _ (ãƒ") _ /¯];
ИДТИ
CREATE PROC [¯ \ _ (ム") _ /¯]. [Sp_¯ \ _ (ãƒ") _ /¯] [@ ¯ \ _ (ム") _ /¯] NVARCHAR (20) AS SELECT [¯ \ _ (ム") _ /¯] FROM [¯ \ _ (ãƒ") _ /¯]. [Vw_¯ \ _ (ム") _ /¯] WHERE [¯¯¯ \ _ (ム") _ /¯] = [@ ¯ \ _ (ãƒ") _ /¯];
ИДТИ
 

Итак, есть ли способ использовать имена параметров хранимой процедуры unicode?

50 голосов | спросил Brent Ozar 18 MarpmSun, 18 Mar 2018 19:47:38 +03002018-03-18T19:47:38+03:0007 2018, 19:47:38

2 ответа


41

Ну, идентификаторы всегда Unicode / NVARCHAR , поэтому технически вы не можете создать ничего, у которого нет имени Unicode

ответил Solomon Rutzky 18 MarpmSun, 18 Mar 2018 23:51:12 +03002018-03-18T23:51:12+03:0011 2018, 23:51:12
21

Я не думаю, что это Unicode вызывает проблему; в случае локальных переменных или имен параметров это означает, что символ не является допустимым символом ASCII /Unicode 3.2 (и нет никакой последовательности экранирования для переменных /параметров, например, для других типов сущностей).

Эта партия работает отлично, она использует символ Unicode, который просто не нарушает правила для идентификаторов без разделителей:

  CREATE ИЛИ ALTER PROCEDURE dbo. [
ответил Aaron Bertrand 18 MarpmSun, 18 Mar 2018 20:04:30 +03002018-03-18T20:04:30+03:0008 2018, 20:04:30

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132