精华内容
下载资源
问答
  • ALTER PROCEDURE [dbo].[AllStatisticsSearch1] @s_StartTime varchar(50) AS BEGIN ... declare @mysql varchar(5000) ... set @mysql='SELECT [UserList].id,PeopleName' ...出错:必须声明标量变量 "@s_StartTime"。
  • 必须声明标量变量

    2013-09-23 22:10:00
    数据库连接的时候 没有将参数的传入到 数据库查询语句中 以 sql server 数据库为例: 1 public static DataTable ExecuteQuerysql(string sql, params SqlParameter[] pams) 2 { 3 return ExecuteQuery...

    这个问题很常见 

    在数据库连接的时候  没有将参数的传入到 数据库查询语句中 

     

    以 sql server 数据库为例:

     

    1 public static DataTable ExecuteQuerysql(string sql, params SqlParameter[] pams)
    2 {
    3 return ExecuteQuery(sql, CommandType.Text,pams);
    4 }

     

     1 private static DataTable ExecuteQuery(string sql, CommandType ct, params SqlParameter[] pams)
     2         {
     3             using (SqlConnection con = new SqlConnection(str))
     4             {
     5                 using (SqlCommand com = new SqlCommand(sql, con))
     6                 {
     7                     com.Parameters.AddRange(pams);
     8                     com.CommandType = ct;
     9                     using (SqlDataAdapter sda = new SqlDataAdapter(com))
    10                     {
    11                         DataTable dt = new DataTable();
    12                         sda.Fill(dt);
    13                         return dt;
    14                     }
    15                 }
    16             }
    17         }

     

    如果 在将ExcuteQuery重新封装的时候  把参数忘传了 就会出现这样的错误

    转载于:https://www.cnblogs.com/tq1226112215/p/3335777.html

    展开全文
  • 应用场景为:后台展示数据列表,进行查询的时候,执行存储过程报错:必须声明标量变量“@xxxx” 由于上家公司都是用的orm框架,很少写原生的sql,所以把它记下来,慢慢积累经验。 1-数据库表设计如下 表名:...

    最近开发写存储过程的时候碰到一个问题。应用场景为:后台展示数据列表,进行查询的时候,执行存储过程报错:必须声明标量变量“@xxxx”

    由于上家公司都是用的orm框架,很少写原生的sql,所以把它记下来,慢慢积累经验。

    1-数据库表设计如下

    表名:UserInfo(ID, UserName,  UserDept)。

    2-存储过程为将列表进行分页展示,但是由于自己没有看懂那个分页的存储过程(不想误导别人),就把他简化了一下,看懂了再整理一篇博客出来。

    简化成了展示所有的用户,可以根据UserName查询

    ALTER PROCEDURE [dbo].[p_userinfo_list]
    @username varchar(50) = ''
    as
    set nocount on
    set transaction isolation level read uncommitted
    set xact_abort on
    
    DECLARE @sql nvarchar(1024)
    if @username != ''
        set @sql = 'select * from t_userinfo where username=@username' --错误写法
        --set @sql = 'select * from t_userinfo  where username = '''+ convert(varchar, @username)+ '''' 正确写法
    else 
        set @sql = 'select * from t_userinfo'
    exec sp_executesql @sql

    执行存储过程:

    exec p_userinfo_list '用户1',报错:

     查了资料把where条件改进了一下:set @sql = 'select * from t_userinfo where username = '''+ convert(varchar, @username)+ ''''

    再执行存储过程,可以显示成功。

     

    but: 那些分号看了半天没看懂,就请教了同事,理解如下:

    'select * from t_userinfo  where username = '''+ convert(varchar, @username)+ ''''

    看最开头'select XXXX'

    然后再看中间的 xxx username=''' 三个', 最后一个‘ 和'select 闭合,前面两个’‘,第一个 ‘ 代表转义将第二个'转义成真正的 '  《==》  看最后4个' ,  首位两个'闭合,中间两个’和前面一样转义

    所以真正到这个字符串拼接了以后,生成的字符串是 :

    select * from t_userinfo  where username = 'convert(varchar, @username)' ,这样理解了么。

    这个和js里面拼接html代码是一样的原理
    比如:
    var temp = 11;
    var html = "<div class='container' οnclick='add(\’"+temp+"\')'>";
    "\'", \ 代表转义,其实本质是一样的,只不过是用的不同的语言。技术都是相同的。

     

    还有一种报错情况就是: 不存在列xxx(或者是说列名无效),就是sql会把你传入的参数,看成一个列名,这时候可能也需要通过''进行转义,大概就是这样。

    ps:google好像有时候图片打不开,火狐,360可以打开,其他的没试过。

     以上文章如有错误,误导了您,请及时指出,欢迎批评。

    转载于:https://www.cnblogs.com/stephenzengx/p/10812907.html

    展开全文
  • 今天在JDBC连接数据库出现了com.microsoft.sqlserver.jdbc.SQLServerException: 必须声明标量变量 "@P2where"异常。预编译的prepareStatement中“?”前面不能有空格,有等号两边带空格习惯的朋友一定要注意这个问题...

    今天在JDBC连接数据库出现了com.microsoft.sqlserver.jdbc.SQLServerException: 必须声明标量变量 "@P2where"异常。预编译的prepareStatement中“?”前面不能有空格,有等号两边带空格习惯的朋友一定要注意这个问题

    at com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDatabaseError(Unknown Source)
    	at com.microsoft.sqlserver.jdbc.IOBuffer.processPackets(Unknown Source)
    	at com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement.getPrepExecResponse(Unknown Source)
    	at com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement.doExecutePreparedStatement(Unknown Source)
    	at com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement$PreparedStatementExecutionRequest.executeStatement(Unknown Source)
    	at com.microsoft.sqlserver.jdbc.CancelableRequest.execute(Unknown Source)
    	at com.microsoft.sqlserver.jdbc.SQLServerConnection.executeRequest(Unknown Source)
    	at com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement.executeUpdate(Unknown Source)
    	at com.db.DButil.update(DButil.java:84)
    	at com.Dao.StuDao.update(StuDao.java:26)
    	at com.Web.updateSer.doPost(updateSer.java:53)
    

    DButil.java:84是count = ps.executeUpdate()

    public int update(String sql,Object...objects) {
    		conn = getConn();
    		int count = 0;
    		try {
    			ps = conn.prepareStatement(sql);
    			if(objects != null && objects.length > 0) {
    				for (int i = 0; i < objects.length; i++) {
    					ps.setObject(i + 1, objects[i]);
    				}
    			}
    			count = ps.executeUpdate() ;
    		} catch (SQLException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		}finally {
    			close();
    		}
    		return count;
    	}
    

    at com.Dao.StuDao.update(StuDao.java:26)是下面这行:

    		update("update Student set name = ?,age = ?,sex = ? where id = ?",t.getName(),t.getAge(),t.getSex(), t.getId());
    

    百度看很多别人的文章发现说是逗号的问题,后来发现没有少逗号,后来经过修改之后正确代码如下 ,预编译的prepareStatement中“?”前面不能有空格,有等号两边带空格习惯的朋友一定要注意这个问题

    		update("update Student set name=?,age=?,sex=? where id=?", t.getName(),t.getAge(),t.getSex(), t.getId());
    
    
    展开全文
  • 以前一直使用OleDbDataAdapter的方式更新数据库,今天我试了一下用OleDbCommand的方式更新数据库出现了莫名其妙的错误。 环境:Sql Server 2005 使用如下代码: stringstrSql="UPDATEM_EmployeesetEMPLOYEENAME=@...

    以前一直使用OleDbDataAdapter的方式更新数据库,今天我试了一下用OleDbCommand的方式更新数据库出现了莫名其妙的错误。
    环境:Sql Server 2005

    使用如下代码:

    None.gif            string strSql = "UPDATE M_Employee set  EMPLOYEENAME = @EMPLOYEENAME where  EMPLOYEEID = @EMPLOYEEID ";
    None.gif
    None.gif            
    using (OleDbCommand Comm = new OleDbCommand(strSql, olecn))
    ExpandedBlockStart.gif            
    {
    InBlock.gif                Comm.Parameters.Add(
    new OleDbParameter("@EMPLOYEENAME", OleDbType.VarChar)).Value = "ddd";
    InBlock.gif                Comm.Parameters.Add(
    new OleDbParameter("@EMPLOYEEID", OleDbType.VarChar)).Value = EmployeeID;
    InBlock.gif
    InBlock.gif                Comm.ExecuteNonQuery();
    ExpandedBlockEnd.gif            }
    一直报错:必须声明标量变量@EMPLOYEENAME

    害我调试了n个小时,不行。
    换了下面的方式就可以了
    None.gif            string strSql = "UPDATE M_Employee set  EMPLOYEENAME = ? where  EMPLOYEEID = ? ";
    None.gif
    None.gif            
    using (OleDbCommand Comm = new OleDbCommand(strSql, olecn))
    ExpandedBlockStart.gif            
    {
    InBlock.gif                Comm.Parameters.Add(
    new OleDbParameter("@P1", OleDbType.VarChar)).Value = "ddd";
    InBlock.gif                Comm.Parameters.Add(
    new OleDbParameter("@P2", OleDbType.VarChar)).Value = EmployeeID;
    InBlock.gif
    InBlock.gif                Comm.ExecuteNonQuery();
    ExpandedBlockEnd.gif            }

    None.gif

    不明白是什么原因,是我代码有问题,还是oledb有问题??



        本文转自永春博客园博客,原文链接:http://www.cnblogs.com/firstyi/archive/2007/08/10/851097.html,如需转载请自行联系原作者

    展开全文
  • using System; using System.Collections; using System.Configuration; using System.Data;...using System.Data.SqlClient;... cmd.CommandText = "insert into Image (image_id,image_content) values('" + TextBox1...
  • 目标本课涵盖以下目标:在PL / SQL中声明和使用标量数据类型•定义声明和初始化PL / SQL变量的指导原则•确定使用%TYPE属性锚定数据类型的好处一、目的 您在PL / SQL中定义和使用的大多数变量都具有标量数据类型。...
  • 1.变量 学习计算机语言,难免不碰到这个名词,不过咱这里说的是MSSQL(微软SQL Server产品)里的数据库语言实现。 稍微对程序比较严谨的语言都要求使用之前都要声明... [Err]42000-[SQLServer]必须声明标量变量...
  • 锚定声明

    2019-12-03 15:37:32
    锚定声明 告诉PL/SQL按照已经定义好的数据结构来设置变量的数据...标量锚定:利用%TYPE属性,可以根据某个表中的一列或者其他的PL/SQL标量变量来定义变量类型; name type_attribute%TYPE [option default val...
  • 这里属于一些关于SQL数据库一些数据类型简单描述 Insert可以在数据库中新增某个表的数据 Update可用于修改数据库某个表的数据 Delete用于删除数据 Select用于查询数据库...@可使数据参数化但需声明标量变量 ...
  • ``` using System; using System.Collections.Generic; using System.Data.SqlClient; using System.Linq;...using System.Text;...就是想弄一个用户验证,然后异常显示@YM是未声明标量变量,求教该怎么写
  • 复合变量

    2011-05-20 08:28:50
    复合变量  复合变量可以将不同的数据类型的多个值存储在一个单元中....在记录类型中可以存储多个标量值,与数据库中的行相似.  必须使用TYPE语句定义记录类型的语法声明如下: TYPE record_name is reco...
  • oracle数据库经典题目

    2011-02-17 15:05:20
    标量变量 C. 游标变量 D. 记录变量 18. 声明%TPYE类型的变量时,服务器将会做什么操作?( A ) A. 为该变量检索数据库列的数据类型 B.复制一个变量 C.检索数据库中的数据 D.为该变量检索列的数据类型和值 19....
  • 使用三层dal中操作数据库是,若是数据库存储过程中没有你定义好的参数,会出现:“必须声明标量变量 "@”的错误,原因是通过db.AddInParameter时数据库中没有这个参数。函数的参数可以尽量使用表中列的名字就不会...
  • db2数据库入门教程(官方中文版)

    千次下载 热门讨论 2010-10-20 13:30:33
    2.2.1数据库分区............................................................................................................23 2.2.2连接集中器(Connection Concentrator ).................................
  • 本机数据库版本为2012,执行存储过程成功,放到服务器执行...必须声明标量变量 "@time"。 消息 137,级别 15,状态 2,过程 proc_DingDan,第 16 行 必须声明标量变量 "@time"。 求高手相助http://ask.csdn.net/my#
  • db2数据库入门官方教程(中文版)

    热门讨论 2013-05-02 14:48:46
    资源简介 第 1章 – DB2 Express-C是什么?...................................................4.1.1 环境变量......................................................................................................
  • 1.数据类型 标量数据类型 :数字型,字符型, 日期型和布尔型 属性数据类型 :%type:复制某个字段的类型; %rowtype:复制表的全部类型; 自定义数据类型:type ...declare变量赋值声明 begin 正常语句块(可镶嵌...
  • PHP基本语法

    2019-01-21 17:28:30
    数据类型与运算: 变量类型: ...声明变量和类型: $a = (float)0 ,变量申明符号为 $,如不声明则动态生成。 常量定义: define("key": value) 常量只能定义为标量值。 变量变量: $...
  • PHP-7.0新特性

    2018-10-09 21:17:26
    标量类型声明 什么是标量类型? 四种标量类型:boolean (布尔型)、integer (整型)、float (浮点型, 也称作 double)、string 两种复合类型:array (数组)、object (对象) 资源是一种特殊变量,保存了到...
  • PL/SQL数据类型

    2012-04-13 12:41:45
    1、标量数据类型: 标量数据类型的变量只有一个值,且内部没有分量。...2.属性数据类型:当一个变量的值是数据库中的一行或者是数据库中的某列时,可以直接使用属性类型来声明。 a.%ROWTYPE:引用数据
  • php学习之基础语法

    2014-06-22 21:39:00
    这些语法都是在学习视频的过程中...1.变量使用 $ 声明变量区分大小写 变量的类型: 4种标量类型: 布尔型、整形、浮点型、字符串 2种复合类型: 数组、对象 2种特殊类型: 资源类型(如数据库、文...
  • MySQL游标的使用

    2019-01-12 11:54:40
    通过MySQL查询数据库,其结果可能为多条记录。在存储过程和函数中使用游标可以实现逐条读取结果集中的记录。游标的使用包括声明游标...游标必须声明在处理程序之前,且声明标量和条件之后,即顺序:变量定...
  • 学习笔记

    2010-08-30 10:23:17
    变量:所有的变量必须用$开头...只能是四种基本标量数据库类型,只能在声明时赋值,不能在运行时改变 区别: 变量必须有没有$, 如何检查常量是否存在:defined多一个d如果存在---1否则是空 判断变量是否存在 i...
  •  在NHibernate的使用中,持久化类的成员变量必须声明对应的属性,NHibernate支持public、internal、protected三种访问修饰符。  2、提供标识属性  持久化类必须提供一个标识属性,标识属性对应数据库
  • VBScript介绍手册

    2010-11-29 12:58:42
    2.3.4 标量变量和数组变量 2.4 VBScript常量 2.4.1 声明自定义常量 2.4.2 使用固有常量 2.5 VBScript的表达式与运算符 2.5.1 算术运算符 2.5.2 关系运算符 2.5.3 逻辑运算符 2.5.4 连接运算符 2.5.5 运算符优先级 第...

空空如也

空空如也

1 2 3 4
收藏数 69
精华内容 27
关键字:

数据库声明标量变量