Вложенный запрос SYBASE не выполняется
У меня есть процедура, которую я пишу, и она содержит вложенную вставку, но вложенная вставка никогда не запускается. Данные вложенной вставки правильно заполняются операторами выбора, но вставка никогда не запускается.
CREATE PROCEDURE search_string #inValue varchar(255)
AS
BEGIN
SET nocount on
CREATE TABLE #results (table_name sysname, column_name sysname)
SELECT
"INSERT #results SELECT DISTINCT '"
+ object_name(c.id)
+ "' as table_name, '"
+ c.name
+ "' as column_name FROM "
+ object_name(c.id)
+ " WHERE "
+ c.name
+ " LIKE '%"
+ @inValue
+ "%'"
FROM syscolumns c, sysobjects o
WHERE
c.usertype in ( 1
,2
,18
,19
,24
,25
,42
)
AND o.type ='U'
AND o.id = o.id
AND c.length >= datalength(@invalue)
SELECT * FROM #results
END
Это дает кучу операторов вставки, которые никогда не выполняются.
1 ответ
Попробуйте ниже код:
CREATE PROCEDURE search_string #inValue varchar(255)
AS
BEGIN
SET nocount on
CREATE TABLE #results (table_name sysname, column_name sysname)
declare @sql varchar(255)
select @sql = 'INSERT #results
SELECT DISTINCT
object_name(c.id)
as table_name,
c.name
as column_name FROM
object_name(c.id)
WHERE
c.name
LIKE ''' +
@inValue
'%''
FROM syscolumns c, sysobjects o
WHERE
c.usertype in ( 1
,2
,18
,19
,24
,25
,42
)
AND o.type =''U''
AND o.id = o.id
AND c.length >= datalength(''' + @invalue ''')'
execute(@sql)
SELECT * FROM #results
END
Надеюсь это поможет:)