存储过程(函数)里面的参数和变量该如何设置可达到最佳?

wf2091139 2007-01-22 07:13:24
对于传进去的参数,如果我不能确定他的长度,比如对某个表的
查询条件,这个条件是用户是动态生成的(完全有可能超过1000),
那么我定义的存储过程的时候一般使用
pr_SelectUserTable @tblName varchar(20),@sqlstr varchar(5000)
--假设他不会超过5000,
我想知道这样定义对系统的性能是不是有很大影响?

另外,在存储过程里面,也有可能定义一个比较大的变量来保存一些
SQL语句,用于最后的执行。对于这个变量又该怎么定义最好?
比如:
declare @sql nvarchar(5000) --或 varchar(5000)
set @sql = 'Select * from '+@tblName+' where '+@sqlstr
Exec(@sql)
这样定义是不是对系统又有很大影响?那该怎么优化。
...全文
390 7 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
gd4134 2007-01-23
  • 打赏
  • 举报
回复
如果是sql2005有max属性,可以设置长度。哈哈。。。
lvcheng606717 2007-01-22
  • 打赏
  • 举报
回复
如果是考虑SP传入参数对于网络传输的影响,只由传入的语句串长度决定,不论是char还是varchar都是一样的,长度没有影响。
marco08 2007-01-22
  • 打赏
  • 举报
回复
对于char、varchar、nchar、nvarchar,如果没有在数据定义或变量声明中指定n,则
默认长度为1。如果没有使用CAST函数指定n,则默认长度为30
marco08 2007-01-22
  • 打赏
  • 举报
回复
不可以
wf2091139 2007-01-22
  • 打赏
  • 举报
回复
哦。
在存储过程或函数中,参数或变量可以不定义长度么?(让他自适应的增长)
marco08 2007-01-22
  • 打赏
  • 举报
回复
declare @sql nvarchar(5000) --这个定义有问题

==
nvarchar(n)

包含 n 个字符的可变长度 Unicode 字符数据。n 的值必须介于 1 与 4,000 之间。
gc_ding 2007-01-22
  • 打赏
  • 举报
回复
一般如果知道@sql的最大长度,就设为那个数就好了,如果不知道,就要设VARCHAR最大8000或者NVARCHAR最大4000,但要防止超过8000
内容概要:本文详细介绍了Anaconda的下载、安装与配置方法(2025最新版)。Anaconda是一个开源的Python/R数据科学集成开发平台,预装了1500多个科学计算库,并提供conda包管理和环境管理功能。文章首先列出了系统要求,接着分别讲述了适用于不同操作系统的下载方式,包括官方下载和国内镜像下载。然后,具体讲解了Windows、macOS和Linux三种操作系统的安装步骤,以及环境变量的手动配置方法。此外,还提供了验证安装是否成功的命令和配置国内镜像源的方法,以提高下载速度。最后,列出了一些常用conda命令和常见问题的解决方案。 适合人群:从事数据科学、机器学习领域的研究人员和开发者,特别是需要频繁使用Python科学计算库的用户。 使用场景及目标:①帮助用户快速搭建Python开发环境,尤其是需要多个Python版本共存或隔离环境的情况下;②解决因网络原因导致的下载速度慢的问题;③提供详细的安装指南,确保安装过程顺利进行;④指导用户正确配置环境变量,避免常见的安装后无法使用的错误。 阅读建议:由于Anaconda涉及多平台安装和配置,建议读者根据自己的操作系统选择相应的章节重点阅读,并严格按照步骤操作。对于初次使用者,建议先从简单的安装入手,再逐步学习环境管理和包管理的相关命令。

34,838

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧