首页 > 解决方案 > cfprocparam 抛出错误执行数据库查询

问题描述

运行此代码时发生此错误

过程 studentinsert 没有参数并且提供了参数。

<cfstoredproc procedure="studentinsert" datasource="student" result="res">
  <cfprocparam cfsqltype="cf_sql_varchar" value="john">
  <cfprocparam cfsqltype="cf_sql_varchar" value="cse">
</cfstoredproc>

mssql 创建的表

CREATE TABLE student(
    studentid int identity(1,1)  PRIMARY KEY,
    studentname varchar(255),
    dept varchar(255),
    );

创建过程

CREATE PROCEDURE studentsub
AS
BEGIN
    SELECT *FROM student
 END;

执行学生

CREATE PROCEDURE studentinsert
AS
BEGIN
    INSERT INTO student (studentname,dept)
        VALUES ('john','cse');
END

标签: coldfusioncoldfusion-9coldfusion-10mssql-jdbccoldfusion-2016

解决方案


错误很明显 - 您需要在存储过程中定义参数,例如:

CREATE PROCEDURE studentinsert @studentname varchar(255), @dept varchar(255)
AS
BEGIN
    INSERT INTO student (studentname,dept)
        VALUES (@studentname, @dept);
END

请注意,此示例使用与您问题中的表定义相同的列类型,但是在大多数应用程序中,我建议使用 nvarchar 而不是 varchar,除非您确定永远不需要支持带有 varchar 不支持的 unicode 字符的名称。


推荐阅读