0

我有一个正在编写的过程,它包含一个嵌套插入,但嵌套插入永远不会运行。嵌套插入的数据由选择语句正确填写,但插入从未运行。


    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

这会产生一堆永远不会运行的插入语句。

4

1 回答 1

0

试试下面的代码:

   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

我希望这有帮助:)

于 2014-12-03T23:01:11.223 回答