Sybase 17:如何将sp_columns结果插入临时表?求正确语法
如何在Sybase中将sp_columns的结果存入临时表?
Sybase ASE 不支持你使用的 et_result 参数语法来直接导出存储过程结果到临时表,正确的做法是先创建与 sp_columns 输出结构匹配的临时表,再通过 INSERT...EXEC 语句捕获结果。
步骤1:创建匹配结构的临时表
sp_columns 的输出列是固定的,你可以直接创建如下结构的临时表:
CREATE TABLE #ColumnListing ( TABLE_QUALIFIER VARCHAR(128), TABLE_OWNER VARCHAR(128), TABLE_NAME VARCHAR(128), COLUMN_NAME VARCHAR(128), DATA_TYPE SMALLINT, TYPE_NAME VARCHAR(128), PRECISION INT, LENGTH INT, SCALE SMALLINT, RADIX SMALLINT, NULLABLE SMALLINT, REMARKS VARCHAR(254), COLUMN_DEF VARCHAR(254), SQL_DATA_TYPE SMALLINT, SQL_DATETIME_SUB SMALLINT, CHAR_OCTET_LENGTH INT, ORDINAL_POSITION INT, IS_NULLABLE VARCHAR(3), SS_DATA_TYPE TINYINT )
步骤2:将sp_columns结果插入临时表
使用 INSERT...EXEC 执行存储过程并将结果写入临时表:
INSERT INTO #ColumnListing EXEC sp_columns 'TableName'
注意事项
- 临时表的列名、数据类型和顺序必须与
sp_columns的输出完全一致,否则会出现列不匹配的报错。 - 若需要跨会话访问临时表,可以使用全局临时表(命名为
##ColumnListing),但一般会话级临时表(#开头)即可满足需求。 - 如果你不确定
sp_columns的输出结构,可以先单独执行EXEC sp_columns 'TableName',查看结果集的列信息后再创建临时表。
内容的提问来源于stack exchange,提问作者avb0101
相关产品推荐
相关产品推荐

