Вопросы с тегом «dynamic-sql»

Создание запроса во время выполнения с операциями конкатенации строк и выполнение запроса из этой строки.

4
Есть ли способ создать скрипт создания таблицы в TSQL?
Есть ли способ сгенерировать сценарий создания из существующей таблицы исключительно в T-SQL (то есть без использования SMO, поскольку T-SQL не имеет доступа к SMO). Допустим, хранимая процедура, которая получает имя таблицы и возвращает строку, содержащую сценарий создания для данной таблицы? Теперь позвольте мне описать ситуацию, с которой я сталкиваюсь, поскольку …

3
Альтернативы объединению строк или процедурному предотвращению повторения кода SQL-запроса?
Отказ от ответственности: Пожалуйста, имейте меня как человека, который использует базы данных лишь малую часть своего рабочего времени. (Большую часть времени я занимаюсь программированием на С ++ на своей работе, но каждый нечетный месяц мне нужно искать / исправлять / добавлять что-то в базе данных Oracle.) Мне неоднократно приходилось писать …

2
Почему SQL-инъекция не происходит по этому запросу внутри хранимой процедуры?
Я сделал следующую хранимую процедуру: ALTER PROCEDURE usp_actorBirthdays (@nameString nvarchar(100), @actorgender nvarchar(100)) AS SELECT ActorDOB, ActorName FROM tblActor WHERE ActorName LIKE '%' + @nameString + '%' AND ActorGender = @actorgender Теперь я попытался сделать что-то вроде этого. Может быть, я делаю это неправильно, но я хочу быть уверен, что такая …

4
Как создать поворотное CROSS JOIN, где определение таблицы в результате неизвестно?
Учитывая две таблицы с неопределенным количеством строк с именем и значением, как бы я отобразил функцию поворота CROSS JOINнад их значениями. CREATE TEMP TABLE foo AS SELECT x::text AS name, x::int FROM generate_series(1,10) AS t(x); CREATE TEMP TABLE bar AS SELECT x::text AS name, x::int FROM generate_series(1,5) AS t(x); Например, …

2
Создать представление в указанной базе данных с динамическим SQL?
Я пишу динамический SQL для удаления и создания представления в другой базе данных. Итак, я написал: set @CreateViewStatement = ' USE ['+ @DB +']; CREATE VIEW [dbo].[MyTable] AS SELECT ........something exec (@CreateViewStatement) Это дает мне ошибку: «CREATE VIEW» должен быть первым оператором в пакете запроса. Если я удаляю оператор USE …

1
Пользовательские запросы: динамический SQL против SQLCMD
Я должен провести рефакторинг и задокументировать ряд foo.sqlзапросов, которые будут переданы команде технической поддержки БД (для конфигураций клиентов и тому подобного). Существуют типы билетов, которые приходят регулярно, когда у каждого клиента есть свои собственные серверы и базы данных, но в остальном схема одинакова по всем направлениям. Хранимые процедуры не являются …

4
Почему вы хотите избежать динамического SQL в хранимой процедуре?
Я слышал, кто-то сказал, что вы не хотите использовать динамический SQL. Можете ли вы привести конкретный пример или пример из реальной жизни? Лично я несколько раз кодирую это в своей базе данных. Я думаю, что это нормально, потому что это гибкость. Я предполагаю, что SQL-инъекция или производительность. Что-нибудь еще?

2
Как динамически изменить базу данных с помощью TSQL
У меня проблемы с попыткой динамически изменить контекст SSMS на базу данных, указанную в динамическом SQL: EXEC sys.sp_executesql N'USE db1 ' ; Он выполняется успешно, однако контекст базы данных SSMS не изменяется. Я попытался небольшое изменение выше, как DECLARE @sql NVARCHAR(100) DECLARE @db NVARCHAR(50) SET @db = N'db1' SET @sql …

2
Можно ли по умолчанию настроить / использовать sp_executesql?
Я смотрю на приложение, которое использует высокодинамичные запросы SQL против SQL Server. Глядя на запросы, которые составлены очень странными и сложными способами, но это уже другая история, я расскажу это, чтобы дать вескую причину того, что я не в состоянии (слишком глупо) самому что-то выяснить ... Я не вижу любой …

1
Хранимая процедура для возврата динамически созданных данных таблицы
Краткая история, мы работаем с внешним поставщиком, у которого есть система опросов. Система не обязательно разработана лучше всего в том случае, когда вы создаете новый опрос и система создает новую таблицу, а именно: Tables ____ Library_1 -- table for Survey 1 SurveyId int InstanceId int Q_1 varchar(50) Library_2 -- table …

2
Как я могу динамически псевдоним столбцов?
У меня есть таблица (не разработанная мной), которая имеет 20 переменных столбцов. То есть, в зависимости от того, какой тип записи вы просматриваете, применимое имя столбца может измениться. Возможные имена столбцов хранятся в другой таблице, которую я могу очень легко запросить. Поэтому запрос, который я действительно ищу, выглядит примерно так: …

1
sp_execute ожидает параметр '@handle' типа 'int'
Я пытаюсь проверить хранимую процедуру, если таблица существует в моей целевой базе данных. Если этого не произойдет, я создам таблицу с использованием таблиц information_schema из исходной базы данных. Однако когда я использую sp_execute, чтобы попытаться вернуть таблицу, если она существует, я получаю сообщение об ошибке. Процедура ожидает параметр '@handle' типа …

1
Параметры печати в динамическом SQL
Я использовал динамический SQL для многих задач и постоянно сталкиваюсь с одной и той же проблемой: печать значений переменных, используемых внутри инструкции Dynamic T-SQL. НАПРИМЕР: Declare @SQL nvarchar(max), @Params nvarchar(max), @DebugMode bit, @Foobar int select @DebugMode=1,@Foobar=364556423 set @SQL='Select @Foobar' set @Params=N'@Foobar int' if @DebugMode=1 print @SQL exec sp_executeSQL @SQL,@Params ,@Foobar=@Foobar …

1
sp_prepexec (sp_execute) против sp_executeSQL
Суть вопроса: являются ли фактические хранимые процедуры единственным механизмом, который реализует кэширование временных таблиц, или системные хранимые процедуры, такие как sp_executeSQL/ sp_executeтакже используют их? Я не администратор баз данных, поэтому, пожалуйста, используйте маленькие слова. Наше приложение посылает через подготовленные заявления , что из профилировщика, я вижу , запускать все SQL …

5
Переключение между базами данных с динамическим SQL
У меня есть процесс, который включает в себя выполнение различных команд между несколькими базами данных - однако, когда я использую динамический SQL для изменения БД с помощью 'use @var', тогда он фактически не меняет базу данных. Выполнение этого в [test_db]: declare @currentDB varchar(max) declare @sql varchar(max) set @currentDB = DB_NAME() …

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.