Вложенный запрос 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

Надеюсь это поможет:)

Другие вопросы по тегам