小编Saf*_*afa的帖子

过程需要未提供的参数

我在访问SQL Server中的存储过程时遇到错误

Server Error in '/' Application.
Procedure or function 'ColumnSeek' expects parameter '@template', which was not supplied. 
Run Code Online (Sandbox Code Playgroud)

当我通过.net的数据连接调用带有参数的存储过程时(System.data.SqlClient),即使我提供了参数,也会发生这种情况.这是我的代码.

SqlConnection sqlConn = new SqlConnection(connPath);
sqlConn.Open();

//METADATA RETRIEVAL
string sqlCommString = "QCApp.dbo.ColumnSeek";
SqlCommand metaDataComm = new SqlCommand(sqlCommString, sqlConn);
metaDataComm.CommandType = CommandType.StoredProcedure;
SqlParameter sp = metaDataComm.Parameters.Add("@template",SqlDbType.VarChar,50);
sp.Value = Template;

SqlDataReader metadr = metaDataComm.ExecuteReader();
Run Code Online (Sandbox Code Playgroud)

我的存储过程是:

   USE [QCApp]
   GO
   SET ANSI_NULLS ON
   GO
   SET QUOTED_IDENTIFIER ON
   GO

   ALTER PROCEDURE [dbo].[ColumnSeek] 
       @template varchar(50)
   AS
   EXEC('SELECT Column_Name, Data_Type 
   FROM [QCApp].[INFORMATION_SCHEMA].[COLUMNS] 
   WHERE TABLE_NAME = ' …
Run Code Online (Sandbox Code Playgroud)

.net sql-server stored-procedures

101
推荐指数
6
解决办法
15万
查看次数

在简单存储过程中正确使用SCOPE_IDENTITY函数

我想简单地将一些信息从简单的客户端发送到日志文件,然后使用创建的标识进行进一步处理.

以下使用SCOPE_IDENTITY()是否正确?

CREATE PROCEDURE [dbo].[LogSearch]
    @userName       VARCHAR(50),
    @dateTimeStart  DATETIME        
AS
BEGIN
SET NOCOUNT ON;


    INSERT INTO [WH].[dbo].[tb_Searches]
            (
            [UserName],
            [DateTimeStart]
            )
    SELECT  @userName, 
        @dateTimeStart;

    SELECT SCOPE_IDENTITY() AS ProfileKey;

END;
Run Code Online (Sandbox Code Playgroud)

编辑

我编写了以下代码:

ALTER PROCEDURE [dbo].[LogSearch]
    @userName   VARCHAR(50),
    @dateTimeStart  DATETIME
AS
BEGIN
    SET NOCOUNT ON;

    INSERT INTO [WH].[dbo].[tb_Searches]
            (
            [UserName],[DateTimeStart]
            )
    VALUES  (@userName, @dateTimeStart);

    RETURN SCOPE_IDENTITY();

END;
Run Code Online (Sandbox Code Playgroud)

sql-server stored-procedures

5
推荐指数
2
解决办法
7万
查看次数

如何使用Sql Server 2008从顶层表中删除10条以上的记录?

如果该数字超过10条记录,则旧记录清除.这意味着,如果表中存储了15条记录,则要删除5条第一条记录.

例:

"DELETE FROM Table WHERE ID NOT IN (SELECT ??? 10 ID FROM Table)"
Run Code Online (Sandbox Code Playgroud)

sql sql-server sql-delete

0
推荐指数
1
解决办法
74
查看次数

标签 统计

sql-server ×3

stored-procedures ×2

.net ×1

sql ×1

sql-delete ×1