![]() |
1
5
唯一的方法是像第一个例子那样列出所有列。没有像这样的语法
但是,出于SQL注入和计划缓存的原因,应该使用参数化SQL。 |
![]() |
2
5
我自己也有同样的问题,我想用一种简单的方法来解决这个问题。 我找到了解决办法 here 这就允许了。我稍微修改了一下,删除了输出id,并使IdColumnName的默认值为'id'。 IF OBJECT_ID('TableRowCopy') IS NOT NULL DROP PROCEDURE TableRowCopy GO SET ANSI_NULLS ON SET QUOTED_IDENTIFIER ON GO CREATE PROCEDURE [dbo].[TableRowCopy]( @TableName VARCHAR(50), @WhereIdValue INT, @IdColumnName VARCHAR(50) = 'Id' ) AS BEGIN DECLARE @columns VARCHAR(5000), @query VARCHAR(8000); SET @query = '' ; SELECT @columns = CASE WHEN @columns IS NULL THEN column_name ELSE @columns + ',' + column_name END FROM INFORMATION_SCHEMA.COLUMNS WHERE ( TABLE_NAME = LTRIM(RTRIM(@TableName)) AND column_name != LTRIM(RTRIM(@IdColumnName)) ); SET @query = 'INSERT INTO ' + @TableName + ' (' + @columns + ') SELECT ' + @columns + ' FROM ' + @TableName + ' WHERE ' + @IdColumnName + ' = ' + CAST(@WhereIdValue AS VARCHAR); EXEC (@query); SELECT SCOPE_IDENTITY(); END 示例用法:
|
|
Johnny T · 基于当前值的SQL合并表[重复] 4 月前 |
![]() |
John D · 需要为NULL或NOT NULL的WHERE子句 5 月前 |
![]() |
ojek · 如何对SQL结果进行分组和编号? 5 月前 |
![]() |
senek · 如何在PL/SQL中将选择结果(列)放入数组中 5 月前 |
![]() |
Sax · 规范化Google表格(第一步) 5 月前 |
![]() |
Jatin · 检索卷计数的动态sql抛出错误语法错误[关闭] 5 月前 |
![]() |
Andrus · 如何在sql中查找第二个匹配项 5 月前 |