Sql 过程或函数“System_Set_Cookies”需要参数“@name”,但未提供该参数
我在执行存储过程时遇到以下错误: 过程或函数“System_Set_Cookies”需要参数“@name”,但未提供该参数 但正如你所看到的,我已经声明了@name,它也有一个整型值Sql 过程或函数“System_Set_Cookies”需要参数“@name”,但未提供该参数,sql,sql-server,stored-procedures,Sql,Sql Server,Stored Procedures,我在执行存储过程时遇到以下错误: 过程或函数“System_Set_Cookies”需要参数“@name”,但未提供该参数 但正如你所看到的,我已经声明了@name,它也有一个整型值 **-- Executing my SP** DECLARE @name int, @Id int, @value nvarchar(255), @update bit; SET @name = 0; SET @Id = 0; SET @value = 'Development'; SET @update = 0;
**-- Executing my SP**
DECLARE @name int, @Id int, @value nvarchar(255), @update bit;
SET @name = 0;
SET @Id = 0;
SET @value = 'Development';
SET @update = 0;
EXEC System_Set_Cookies;
**-- Stored Procedure Query**
ALTER PROCEDURE [dbo].[System_Set_Cookies]
-- Add the parameters for the stored procedure here
@name INT,
@Id INT,
@value NVARCHAR(255),
@update BIT
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
-- Insert statements for procedure here
IF @update = 1
BEGIN
SELECT @Id = COOKIE_ID FROM tbl_Cookies WHERE cookie_name = @name;
UPDATE tbl_Cookies SET cookie_name = @name WHERE COOKIE_ID = @Id;
UPDATE tbl_Cookies_User SET cookie_value = @value WHERE cookie_id = @Id;
END
ELSE
BEGIN
INSERT INTO tbl_Cookies (cookie_name) VALUES (@name);
SELECT @Id = MAX(COOKIE_ID) FROM tbl_Cookies;
INSERT INTO tbl_Cookies_User (cookie_id, cookie_value) VALUES (@Id, @value);
END
END
仅仅因为您有一个与存储过程的参数名匹配的变量,SQL Server并不认为您一定要将该变量作为参数传递。你必须明确:
DECLARE @name int, @Id int, @value nvarchar(255), @update bit;
SET @name = 0;
SET @Id = 0;
SET @value = 'Development';
SET @update = 0;
EXEC System_Set_Cookies @name, @id, @value, @update;
而且名字甚至不必匹配:
DECLARE @OOname int, @Id int, @value nvarchar(255), @update bit;
SET @OOname = 0;
SET @Id = 0;
SET @value = 'Development';
SET @update = 0;
EXEC System_Set_Cookies @name = @OOname, @id, @value, @update;
从C调用时,请确保将CommandText设置为存储过程的名称,将CommandType设置为StoredProcedure,然后参数将自动匹配,而无需显式设置同时标记正在使用的dbms。该代码是特定于产品的。@Yogeshharma抱歉,但我也需要通过C运行它,我在那里遇到了相同的错误,因此我认为您的答案是不可能的。谢谢您的回答。@Yogeshharma MS SQLI在执行存储过程时遇到了这个错误:您在哪里执行它?怎样发布执行它的代码。