【发布时间】:2015-11-21 19:43:04
【问题描述】:
试图将记录从一张表插入到另一张表中。目标表 (@TableName) 比源表 (@Sourcetable) 多了三个列。这三列是浮点列,并设置为 NULL。
插入零或保留NULL都没有关系,只要插入有效
程序因此失败并给出以下错误
列名或提供的值数与表不匹配 定义。
请参阅下面的程序,任何 cmets 我如何使用下面的程序来做到这一点:
ALTER PROCEDURE [dbo].[usr_INSERTRECORD]
-- Add the parameters for the stored procedure here
@SourceTable SYSNAME,
@TableName SYSNAME,
@TransDate Date,
@Symbol nvarchar(50)
--<@Param2, sysname, @p2> <Datatype_For_Param2, , int> = <Default_Value_For_Param2, , 0>
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
-- Insert statements for procedure here
DECLARE @DATEVARCHAR nvarchar(4000);
SET @DATEVARCHAR = CONVERT(NVARCHAR, @TransDate, 103);
-- Actual Statement that does the insert
-- This is the statement causing the issue; works if schema matches on both tables
DECLARE @SQLCommand NVARCHAR(MAX) =
N'INSERT INTO ' + QUOTENAME(@TableName) + ' SELECT * FROM ' + + QUOTENAME(@SourceTable)
+ ' WHERE (TRANSDATE = @TransDate AND SYMBOL = @SYMBOL)';
EXECUTE [dbo].[sp_executesql] @sqlCommand,
N'@TransDate date, @Symbol nvarchar(50)',
@TransDate = @TransDate, @Symbol = @Symbol;
END
【问题讨论】:
-
您好 HDB,请注意这样一个事实,即在 SO 上给出答案的专业人士渴望获得声誉积分。为有用的答案投票并检查最佳答案作为接受的答案将是非常好的。这将向其他人表明这个问题已经解决。如果您不能解决您的问题,请发表评论。您可能还想检查您之前的问题...谢谢
-
建屋局,我刚刚看了你的资料。您提出了 14 个问题,但接受的答案不超过两个。请在这里看一下:stackoverflow.com/help/someone-answers。关键是,未被接受的问题永远保持开放。谢谢
标签: sql sql-server tsql stored-procedures