Osa*_*ada 2 sql stored-procedures
我可以varchar在我的存储过程中使用参数而不声明它的长度吗?例如,我想如下声明我的存储过程:
CREATE PROCEDURE [TEST]
@Domain varchar,
@Numbers int
AS
.....
Run Code Online (Sandbox Code Playgroud)
如果存储过程可以自动检测参数长度,对我来说就容易多了,在这种情况下,如果我更改了表中的列长度,我将不需要去更新所有使用此列的存储过程。
谢谢,
如果省略长度,则默认为 1 个字符。
例如:varchar是 的同义词varchar(1)。
在一个地方定义长度的一种方法是type,例如:
create type Domain from varchar(30) not null;
Run Code Online (Sandbox Code Playgroud)
然后你可以在其他定义中使用这个新类型:
create procedure TestProcedure @par1 domain as select @par1
go
create table TestTable (col1 domain)
Run Code Online (Sandbox Code Playgroud)
但是,您不能在不删除使用它的所有内容的情况下更改类型的定义。
根据我的经验,数据长度更改很少见,而且当它们发生时,它们很容易手动重构。所以我会坚持varchar(x)而不是type.
| 归档时间: |
|
| 查看次数: |
1706 次 |
| 最近记录: |