这是我的存储过程:
ALTER PROCEDURE [dbo].[sp_Update_Projecttijden]
@tabelnaam NVARCHAR(30) ,
@starttijd DATETIME,
@eindtijd DATETIME,
@tijd FLOAT,
@startid INT,
@eindid INT
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);
DECLARE @SQLCommand NVARCHAR(MAX) = N'
UPDATE ' + QUOTENAME(@tabelnaam) + N'
SET Start = @starttijd
, Einde = @eindtijd
, Tijd = @tijd
, StartID = @startid
, EindID = @eindid
WHERE …Run Code Online (Sandbox Code Playgroud) 我试图在以下SQL中使用变量tablename,但我一直在使用
必须声明标量变量@Projectnr
从C#程序执行.
这些值是由程序传递的,我确信这是在这个SQL的某个地方混淆了......
这是SQL:
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[sp_Insert_ProjectWerktijden]
@Projectnr VARCHAR(50),
@Tasknr VARCHAR(50),
@Datum DATETIME,
@Startuur DATETIME,
@Einduur DATETIME,
@WerktijdDEC float,
@TijdTijd DATETIME,
@Scanner VARCHAR(50),
@StartID int,
@EindID int,
@Functiecode int,
@Naam varchar(100),
@table NVARCHAR(50)
AS
BEGIN
SET NOCOUNT ON
DECLARE @sql NVARCHAR(MAX)
SET @sql= 'INSERT INTO **TABLE**
(
Projectnr,
Taaknummer,
Datum,
Start,
Einde,
Tijd,
TijdTijd,
Scanner,
StartID,
EindID,
Functiecode,
Naam
)
VALUES
(
@Projectnr,@Tasknr,@Datum,@Startuur,@Einduur,@WerktijdDEC,@TijdTijd,@Scanner,@StartID,@EindID,@Functiecode,@Naam
)
';
SET @sql = REPLACE(@sql, '**TABLE**', @table); …Run Code Online (Sandbox Code Playgroud)